单引号引发的sql注入问题
正常情况下:
拼接前 id为"kk" password为"1234"
拼接后的查询语句:select * from employees where id=‘kk’ and password=‘1234’;
如果将password改为"4567 'or ‘1’='1"
拼接后的查询语句:select * from employees where id=‘kk’ and password=‘4567’ or ‘1’=‘1’;
引发sql注入问题。
那么如果拼接前将’替换为空,是否能解决呢?
过滤单引号仍存在问题
上面的例子替换完后确实能有效果,但是再看下面这个例子:
拼接前id为"kk\" password为"1=1;#"
拼接后变为 select * from employees where id=‘kk\’ and password =’ or 1=1;#’;
\将’转义,筛选条件变为 id是否为"kk’and password=" 或者 1==1.
#后面注释。