<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

    PHP代碼網(wǎng)站防范SQL注入漏洞攻擊的建議

     所有的網(wǎng)站管理員都會(huì)關(guān)心網(wǎng)站的安全問(wèn)題。說(shuō)到安全就不得不說(shuō)到SQL注入攻擊(SQL Injection)。黑客通過(guò)SQL注入攻擊可以拿到網(wǎng)站數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限,之后他們就可以拿到網(wǎng)站數(shù)據(jù)庫(kù)中所有的數(shù)據(jù),惡意的黑客可以通過(guò)SQL注入功能篡改數(shù)據(jù)庫(kù)中的數(shù)據(jù)甚至?xí)褦?shù)據(jù)庫(kù)中的數(shù)據(jù)毀壞掉。做為網(wǎng)絡(luò)開(kāi)發(fā)者的你對(duì)這種黑客行為恨之入骨,當(dāng)然也有必要了解一下SQL注入這種功能方式的原理并學(xué)會(huì)如何通過(guò)代碼來(lái)保護(hù)自己的網(wǎng)站數(shù)據(jù)庫(kù)。今天就通過(guò)PHP和MySQL數(shù)據(jù)庫(kù)為例,分享一下我所了解的SQL注入攻擊和一些簡(jiǎn)單的防范措施和一些如何避免SQL注入攻擊的建議。
      什么是SQL注入(SQL Injection)?
      簡(jiǎn)單來(lái)說(shuō),SQL注入是使用代碼漏洞來(lái)獲取網(wǎng)站或應(yīng)用程序后臺(tái)的SQL數(shù)據(jù)庫(kù)中的數(shù)據(jù),進(jìn)而可以取得數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限。比如,黑客可以利用網(wǎng)站代碼的漏洞,使用SQL注入的方式取得一個(gè)公司網(wǎng)站后臺(tái)數(shù)據(jù)庫(kù)里所有的數(shù)據(jù)信息。拿到數(shù)據(jù)庫(kù)管理員登錄用戶(hù)名和密碼后黑客可以自由修改數(shù)據(jù)庫(kù)中的內(nèi)容甚至刪除該數(shù)據(jù)庫(kù)。SQL注入也可以用來(lái)檢驗(yàn)一個(gè)網(wǎng)站或應(yīng)用的安全性。SQL注入的方式有很多種,但本文將只討論最基本的原理,我們將以PHP和MySQL為例。本文的例子很簡(jiǎn)單,如果你使用其它語(yǔ)言理解起來(lái)也不會(huì)有難度,重點(diǎn)關(guān)注SQL命令即可。
      一個(gè)簡(jiǎn)單的SQL注入攻擊案例
      假如我們有一個(gè)公司網(wǎng)站,在網(wǎng)站的后臺(tái)數(shù)據(jù)庫(kù)中保存了所有的客戶(hù)數(shù)據(jù)等重要信息。假如網(wǎng)站登錄頁(yè)面的代碼中有這樣一條命令來(lái)讀取用戶(hù)信息。
    <?
    $q = "SELECT `id` FROM `users` WHERE `username`= ' " .$_GET['username']. " ' AND `password`= ' " .$_GET['password']. " ' ";
    ?>
      現(xiàn)在有一個(gè)黑客想攻擊你的數(shù)據(jù)庫(kù),他會(huì)嘗試在此登錄頁(yè)面的用戶(hù)名的輸入框中輸入以下代碼:
      ' ; SHOW TABLES;
      點(diǎn)擊登陸鍵,這個(gè)頁(yè)面就會(huì)顯示出數(shù)據(jù)庫(kù)中的所有表。如果他現(xiàn)在使用下面這行命令:
      '; DROP TABLE [table name];
      這樣他就把一張表刪除了!
      當(dāng)然,這只是一個(gè)很簡(jiǎn)單的例子,實(shí)際的SQL注入方法比這個(gè)要復(fù)雜得多,黑客也愿意花大量的時(shí)間來(lái)不斷嘗試來(lái)攻擊你的代碼。有一些程序軟件也可以自動(dòng)地來(lái)不斷嘗試SQL注入攻擊。了解了SQL注入的攻擊原理后,我們來(lái)看一下如何防范SQL注入攻擊。
      防范SQL注入 - 使用mysql_real_escape_string()函數(shù)
      在數(shù)據(jù)庫(kù)操作的代碼中用這個(gè)函數(shù)mysql_real_escape_string()可以將代碼中特殊字符過(guò)濾掉,如引號(hào)等。如下例:
    <?
    $q = "SELECT `id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET['password'] ). " ' ";
    ?>
      防范SQL注入 - 使用mysql_query()函數(shù)
      mysql_query()的特別是它將只執(zhí)行SQL代碼的第一條,而后面的并不會(huì)執(zhí)行。回想在最前面的例子中,黑客通過(guò)代碼來(lái)例后臺(tái)執(zhí)行了多條SQL命令,顯示出了所有表的名稱(chēng)。所以mysql_query()函數(shù)可以取到進(jìn)一步保護(hù)的作用。我們進(jìn)一步演化剛才的代碼就得到了下面的代碼:
    <?
    //connection
    $database = mysql_connect("localhost", "username","password");
    //db selection
    mysql_select_db("database", $database);
    $q = mysql_query("SELECT `id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET['password'] ). " ' ", $database);
    ?>
      除此之外,我們還可以在PHP代碼中判斷輸入值的長(zhǎng)度,或者專(zhuān)門(mén)用一個(gè)函數(shù)來(lái)檢查輸入的值。所以在接受用戶(hù)輸入值的地方一定要做好輸入內(nèi)容的過(guò)濾和檢查。當(dāng)然學(xué)習(xí)和了解最新的SQL注入方式也非常重要,這樣才能做到有目的的防范。如果使用的是平臺(tái)式的網(wǎng)站系統(tǒng)如Wordpress,要注意及時(shí)打上官方的補(bǔ)丁或升級(jí)到新的版本。如果有講得不對(duì)的地方或不理解的請(qǐng)?jiān)谠u(píng)論區(qū)留言。

    posted on 2014-03-07 10:58 順其自然EVO 閱讀(704) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 安全性測(cè)試

    <2014年3月>
    2324252627281
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(55)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲国产精品毛片av不卡在线| 亚洲欧美成人综合久久久| 国产免费私拍一区二区三区| 99视频免费播放| 一区二区三区免费精品视频| 亚洲一本之道高清乱码| 无码久久精品国产亚洲Av影片| 又爽又黄无遮挡高清免费视频| 国产福利在线免费| 十八禁无码免费网站| 中文字幕免费在线看电影大全 | 麻豆安全免费网址入口| 亚洲春色在线观看| 亚洲AV日韩AV高潮无码专区| 亚洲日韩在线观看| 亚洲第一页综合图片自拍| 日韩成人在线免费视频| 久久久久国色AV免费看图片| 国产大片免费网站不卡美女 | 亚洲精品视频在线| 2022国内精品免费福利视频| 亚洲av成本人无码网站| 亚洲欧美不卡高清在线| 亚洲人成人伊人成综合网无码| 亚洲最大成人网色香蕉| 亚洲一级大黄大色毛片| 国产亚洲福利在线视频| 亚洲av无码专区在线| 亚洲av无码一区二区三区观看| 亚洲六月丁香六月婷婷色伊人 | 日韩精品无码专区免费播放| 免费视频精品一区二区三区 | 国产免费黄色大片| 国产免费看插插插视频| 一区国严二区亚洲三区| 亚洲av高清在线观看一区二区 | 久久久久亚洲AV无码专区首| 亚洲丁香色婷婷综合欲色啪| 亚洲最大的成网4438| 亚洲经典在线中文字幕| 亚洲国产激情在线一区|