探讨PHP SQL注入的解决思路
今天研究了一下PHP SQL注入,发现很多网上防范方法很多有漏洞或比较繁琐.
我自己整理了一个思路,请大家探讨一下有没有漏洞.
思路:SQL里尽可能的采用两个引号闭合变量;对变量中的引号转义;对不能采用2个引号闭合的变量,先预先判断变量类型;
方案:
1 所有非数值运算(如字符,简单数值型等等)的SQL变量都加引号;
2 所有非数值运算的SQL变量的值都采用magic_quotes_gpc或者addslashes转义;
3 对需要数值运算的变量和其他不能加引号的SQL(如IN语句),预先判断变量类型.
4 关闭php.ini的disply_error.(可选,如不能关闭,需自己手动让SQL语句不能执行报错)