程序開(kāi)發(fā)過(guò)程中不注意規(guī)范書寫sql語(yǔ)句和對(duì)特殊字符進(jìn)行過(guò)濾,導(dǎo)致客戶端可以通過(guò)全局變量POST 和GET提交一些sql語(yǔ)句正常執(zhí)行。產(chǎn)生Sql注入。
下面是防止辦法:
a. 過(guò)濾掉一些常見(jiàn)的數(shù)據(jù)庫(kù)操作關(guān)鍵字,或者通過(guò)系統(tǒng)函數(shù)來(lái)進(jìn)行過(guò)濾。
b. 在PHP配置文件中將Register_globals=offff;設(shè)置為關(guān)閉狀態(tài)
c. SQL語(yǔ)句書寫的時(shí)候盡量不要省略小引號(hào)(tab 鍵上面那個(gè))和單引號(hào)
d. 提高數(shù)據(jù)庫(kù)命名技巧,對(duì)于一些重要的字段根據(jù)程序的特點(diǎn)命名,取不易被猜到的
e. 對(duì)于常用的方法加以封裝,避免直接暴漏SQL語(yǔ)句
f. 開(kāi)啟PHP安全模式:Safe_mode=on;
g. 打開(kāi)magic_quotes_gpc來(lái)防止SQL注入
h. 控制錯(cuò)誤信息:關(guān)閉錯(cuò)誤提示信息,將錯(cuò)誤信息寫到系統(tǒng)日志。
i. 使用mysqli或pdo預(yù)處理。