我正在爲MySQL查詢使用ezSQL PHP類。由於我的所有查詢都通過$ezsql->query()
函數,所以我認爲實現一種方法來阻止$ezsql->query()
中的常用SQL注入技術是個好主意。檢測查詢中的常見SQL注入模式
例如,最常見的可能是1=1
。所以這個正則表達式應該能夠阻止所有的變化:
preg_match('/(?:"|\')?(\d)(?:"|\')?=(?:"|\')?\1(?:"|\')?/',$query);
這將阻止"1"="1"
,'1'=1
,1=1
等
這是一個好主意?如果是這樣,還有其他一些常見模式?
編輯:忘了提及,我確實使用驗證和衛生。這只是一個額外的預防措施。
一個更好的想法是使用允許你做準備語句+參數綁定的東西,這樣可以完全避免最常見的攻擊。 – Amber 2012-02-02 05:07:01