㈠ 过滤单引号后是否sql注入就无解了
也不能这样说,要过滤的内容很多,如注释 -- ,exec delete select update 基本的都要过滤,但这不是回治本的,答如果16进制攻击也会出问题。
最好的办法就是使用参数方式来处理SQL,绝不要拼字符
16进制:
http://www.cnblogs.com/liyongfisher/archive/2010/12/20/1911432.html
参数化处理:
http://www.cnblogs.com/lzrabbit/archive/2012/04/21/2460978.html
㈡ 如果所有关键字都过滤就可以防止SQL注入了么
如果所来有关键字都过滤,确自实可以。既然没有关键字,那么传入的参数只是个字符串,没有其他的效果了。
但是,这是不可能的,有些时候你不得不用到一些关键字,比如密码[这里面肯定会含有特殊字符的]
建议:采用参数化的赋值方式
我们实际做的是尽可能避免参数注入,绝对安全的程序是不存在的,只有尽可能的安全。
㈢ 防sql注入到底应过滤哪些字符
一般来说,这样处理即可:
所有参数都当作字符串处理,用单引号括起来。另外就是要把字符串中的单引号替换掉。