我说一个例子你就很明白了,
给你一张数据库表,你看下图
有一张表forum_user,里面有username,password这两个字段
表里有两条记录,我现在进行如下查询:
SELECT * FROM `forum_user` where username='asd' and password=' 'or 1 or' '
查询结果是:两条全出来了,是不是感觉很惊奇啊,username和password都没有符合的怎么还可以全都查询出来
这就是成为网站后台“万能钥匙”,接下来就谈谈SQL注入
如果你页面有两个表单一个是用户名一个是密码,你在后台获取这两个参数时进行如下字符串拼接
select * from table where username=' "+username+" ' and password=' "+password+" '
进行查询时,当别人输入的密码为 'or 1 or'时,就可以吧所有结果都查询出来了,那别人就可以顺利的进入
你的网站后台了。
当你采用防止注入的方式时,如:使用Preparedstatement时,setString方法就会进行字符串的判别,阻止SQL的注入
其他方式的防止SQL注入道理是一样的。
|