1、在mysql中,字段 为数字 不判断为 本表字段 例如 select * from user where 2=‘2’; 如果是字母则 判断是否 为本表字段
2、在mysql 中所有的 非0 和 非false 的字段都为 true 例如 select * from user where 2; 为真选出所有的字段
3、正确的sql语句,字符字段须加上 单引号 例如 select * from user where name ='".$name."';
加上单引号 则判断为一个变量,
不加,攻击的时候 当成两个变量 $name=ssfs union select * from user 例如 select * from user where name=".$name.";
4、mysql中 /*表示注释 select * from user where name="sfs" /* and pass='sfs'; pass不执行了
5、pdo的预处理函数 prepare 能处理sql 注入,可以使用这个接口
6、做搜索的时候 需要判断 输入的内容为空 为% 为_ 等通配符
7、解决办法是 在PHP.ini 中开启 magic_quote_qrc 为 on 或者 加上 addslashes() 函数
内容数值的 用 interval 函数 字符串 的 用addslases或htmlsepecialchars 函数 并判断存不存在 select union delete 等关键词
8、还有高级注入的是 char() 函数转义 ,也该过滤它