成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

PHP 如何安全的使用 MySQL ?

leoperfect / 3583人閱讀

摘要:但是,你所用的寫(xiě)法真的安全嗎面對(duì)越來(lái)越猖獗的黑客攻擊,注入防范非常重要,所以使用也要有更正確的姿勢(shì)。關(guān)于注入就是通過(guò)把命令插入到表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢(xún)字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的命令。

大多數(shù) PHP 程序員對(duì) MySQL 肯定不陌生,至于各種 MySQL 函數(shù)的用法在開(kāi)發(fā)手冊(cè)和 w3school 這類(lèi)網(wǎng)站上也有很多介紹。但是,你所用的寫(xiě)法真的安全嗎?面對(duì)越來(lái)越猖獗的黑客攻擊,SQL 注入防范非常重要,所以使用 MySQL 也要有更正確的姿勢(shì)。

關(guān)于 SQL 注入

SQL Injection:就是通過(guò)把 SQL 命令插入到 Web 表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢(xún)字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的 SQL 命令。

具體來(lái)說(shuō),它是利用現(xiàn)有應(yīng)用程序,將(惡意)的 SQL 命令注入到后臺(tái)數(shù)據(jù)庫(kù)引擎執(zhí)行的能力,它可以通過(guò)在 Web 表單中輸入(惡意)SQL 語(yǔ)句得到一個(gè)存在安全漏洞的網(wǎng)站上的數(shù)據(jù)庫(kù),而不是按照設(shè)計(jì)者意圖去執(zhí)行 SQL 語(yǔ)句。

在網(wǎng)上可以搜到一些簡(jiǎn)單例子,通過(guò)一步步有目的地調(diào)整 url 請(qǐng)求參數(shù),讓 server 返回其 MySQL 數(shù)據(jù)結(jié)構(gòu)及內(nèi)容,以達(dá)到獲取敏感數(shù)據(jù)的目的。

防注入的方法

開(kāi)發(fā)者要使用合適的數(shù)據(jù)庫(kù)操作函數(shù),這一點(diǎn)也是開(kāi)發(fā)手冊(cè)和教程上很少提到的。
舉個(gè)例子,要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的查詢(xún)功能,一般會(huì)這樣寫(xiě):

這種用法相當(dāng)不安全,如果被人盯上,會(huì)很容易地進(jìn)行 sql 注入
所以有不少人推薦使用 mysql_real_escape_string,寫(xiě)法如下:

這種方法安全性比第一種更高,但對(duì)方還是可以利用編碼的漏洞來(lái)實(shí)現(xiàn)輸入任意密碼就能登錄服務(wù)器的注入攻擊。另外像一些 str_replace,addslashes 或者使用 magic_quotes_gpc 選項(xiàng)之類(lèi)的方法,不是已經(jīng)失效就是仍然有可能被破解。

然而百度一下「PHP 防注入」,仍然有很多文章在介紹上述辦法。所以我們這里要鄭重提示大家這個(gè)風(fēng)險(xiǎn),提醒所有后來(lái)者繞過(guò)這個(gè)坑。

那么,如今還能幸免于注入的方法就是 Prepared Statement 機(jī)制了。這里推薦大家使用 mysqli 方式,mysql 擴(kuò)展已經(jīng)在 php5.5 中被廢棄,在 php7 中更是直接不支持。為向高版本兼容考慮,新代碼盡量使用 mysqli
最終的查詢(xún)代碼就變成了這樣:

prepare("SELECT * FROM Person WHERE username=? AND password=?"))
{ 
  $stmt->bind_param("ss",$username,$password); 

  $stmt->execute(); 
}

// 一些代碼

$mysqli->close(); 
?>

把所有操作 MySQL 的代碼都重構(gòu)成上面這樣,那么面對(duì) SQL 注入就可以高枕無(wú)憂了。另外 pdo 也有 Prepared Statement 機(jī)制,同樣能夠保護(hù)數(shù)據(jù)庫(kù),有興趣的同學(xué)可以自己嘗試一下。

OneAPM for PHP 能夠深入到所有 PHP 應(yīng)用內(nèi)部完成應(yīng)用性能管理 能夠深入到所有 PHP 應(yīng)用內(nèi)部完成應(yīng)用性能管理和監(jiān)控,包括代碼級(jí)別性能問(wèn)題的可見(jiàn)性、性能瓶頸的快速識(shí)別與追溯、真實(shí)用戶(hù)體驗(yàn)監(jiān)控、服務(wù)器監(jiān)控和端到端的應(yīng)用性能管理。想閱讀更多技術(shù)文章,請(qǐng)?jiān)L問(wèn) OneAPM 官方技術(shù)博客。
本文轉(zhuǎn)自 OneAPM 官方博客

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30297.html

相關(guān)文章

  • 如何在windows下搭建Nginx+MySQL+PHP環(huán)境

    摘要:前往下載,選擇版本。在目錄下新建鏈接數(shù)據(jù)庫(kù)成功鏈接數(shù)據(jù)庫(kù)失敗運(yùn)行之后輸出下面結(jié)果,說(shuō)明可以解析文件且可以鏈接數(shù)據(jù)庫(kù)。 準(zhǔn)備所需安裝包 本次所選安裝版本是:nginx1.11.5,php7.1.0,mysql5.7.16,當(dāng)然可以根據(jù)喜歡的版本下載,為了方便管理,我在D盤(pán)下新建了wnmp文件夾,里面包含文件夾有mysql,php,nginx,www,www為存放項(xiàng)目文件夾。Nginx: ...

    Sunxb 評(píng)論0 收藏0
  • 如何在windows下搭建Nginx+MySQL+PHP環(huán)境

    摘要:前往下載,選擇版本。在目錄下新建鏈接數(shù)據(jù)庫(kù)成功鏈接數(shù)據(jù)庫(kù)失敗運(yùn)行之后輸出下面結(jié)果,說(shuō)明可以解析文件且可以鏈接數(shù)據(jù)庫(kù)。 準(zhǔn)備所需安裝包 本次所選安裝版本是:nginx1.11.5,php7.1.0,mysql5.7.16,當(dāng)然可以根據(jù)喜歡的版本下載,為了方便管理,我在D盤(pán)下新建了wnmp文件夾,里面包含文件夾有mysql,php,nginx,www,www為存放項(xiàng)目文件夾。Nginx: ...

    Soarkey 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<