更新時(shí)間:2022-12-08 來(lái)源:黑馬程序員 瀏覽量:
SQL注入產(chǎn)生的根本原因是因?yàn)槌绦蛟陂_(kāi)發(fā)過(guò)程中不注意規(guī)范書(shū)寫SQL語(yǔ)句和對(duì)特殊字符進(jìn)行過(guò)濾,導(dǎo)致客戶端可以通過(guò)全局變量POST和GET提交一些特殊字符,讓SQL語(yǔ)句正常執(zhí)行。
防止SQL注入的常用方法有如下幾種:
1.開(kāi)啟配置文件中的magic_quotes_gpc和magic_quotes_runtime設(shè)置,對(duì)一些字符過(guò)濾。
2.執(zhí)行SQL語(yǔ)句時(shí)使用addslashes()函數(shù),對(duì)特殊字符轉(zhuǎn)義后再執(zhí)行SQL語(yǔ)句。
3.SQL語(yǔ)句書(shū)寫盡量不要省略小引號(hào)(")和單引號(hào)('')。
4.過(guò)濾掉SQL語(yǔ)句中的一些關(guān)鍵字,例如update、insert、delete、select、*等。
5.提高數(shù)據(jù)庫(kù)表和字段的命名技巧,對(duì)一些重要的字段根據(jù)程序的特點(diǎn)命名,取不易被猜到的名字。
6.PHP配置文件中設(shè)置register_globals為off,關(guān)閉全局變量注冊(cè)。
7.控制錯(cuò)誤信息,不要在瀏覽器上輸出錯(cuò)誤信息,將錯(cuò)誤信息寫到日志文件中。
8.使用mysqli或PDO預(yù)處理。