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