update userss set password = '"+checkpassword1+"' where userid='" + userid+ "'"当userid = ' aa or 1=1 '
存在SQL注入漏洞具体表现为当 WHERE条件中包含OR时,语句将改变意义既:当userid的值为 ' or 1=1 or 1='时那么这个SQL语句就变成 update userss set password = '' where userid='' or 1=1 or 1=''那么这时,就会把所有的用户密码都更成了你只定的密码
應該是不會的,你的update後面有條件的,應該只會更新滿足條件的數據.
checkpassword1=a' --
userid=aaa---整个语句
update userss set password = 'a' --' where userid='aaa'--好像有漏洞
checkpassword1=' --就改成空了
---------
如果userid的值为
asdfd or 1>0
时就出问题了.
update userss set password = '"+checkpassword1+"' where userid='" + userid+ "'"
---------
如果userid的值为
asdfd or 1>0
时就出问题了.
--------------------------------------------------------
在 userid做文章应该是userid=
asdfd' or '1'='1要把引号配好对
同时去掉 "单引号" ,这些接收的参数先 查询一下,如:
select userid,userpassword from userss where userid='" + userid+ "'"
然后把查询的结果 放入变量,和从客户端接收的参数比较判断以后,再做修改,否则就忽略并记录。
checkpassword1,userid
是直接接收用户输入的
用户可以使userid='" + userid+ "'"这个等式恒成立等于1
所以
在处理用户数据的时候
需要防止SQL注入
屏蔽一些特殊字符
网上方法很多
自己去看看
update userss set password = '' where userid='' or 1=1 or 1=''那么这时,就会把所有的用户密码都更成了你只定的密码