一直以来对于sql注入云里雾里,多次了解后有些许领悟,一起分享,希望给刚入门的朋友一些帮助。
我们来看如果不采用占位符就是问号的sql查询语句,此多用于登录查询。
sql语句:select * from user where username=‘"+username+"‘ and password= ‘"+password+"‘
我们把以上语句写的分开一些,来看,这样比较清楚,如下:
select * from user username=‘ "+username+" ‘ and password=‘ "+password+" ‘
java 链接数据库,用于查询比对username和password ,sql语句就是以上,很简单的查询语句。
看似没什么问题,如果我们这样输入,就会导致登录漏洞,就是不管账号密码对不对都能登录上,如下输入方式:
username:dkjfjdl 备注:随便输入
password:a‘ or ‘a‘=‘a
这样的username和password传到sql进行查询,语句就变成了恒等式,如下:
select * from user where username=‘dkjfjdl‘ and password=‘a‘ or ‘a‘=‘a‘
这样就造成不论username对不对,其where后面都是true,所以造成sql注入问题。
以上就是关于sql注入的个人理解,不足之处,多多批评。