很简单的一个登陆界面:
一个输入用户名的输入框,一个输入密码的输入框,还有一个提交按钮
用户输入用户名和密码后,假设我在后台得到该用户名和密码,然后这样验证:
id - 代表得到的用户名
password - 代表得到的密码
sql语句这样写:
select count(*) from 表 where 用户名= id and 密码 = password
然后根据返回值,如果是0就说明输入不合法,如果大于0就说明合法
大家觉得这样写会有什么问题吗,我在试验时发觉这样会有很大的安全问题
诸位知道如何破解这样的情况吗,还有如何加以改进
select count(*) from 表 where 用户名= id and 密码 = password
别人可以输入相应的Sql语句得到你的返回数据:)直接在数据库写一个存储过程来判断
会好一些
绝对的不安全。
在取到两个字符串后
1.对两个字符串进行验证,过滤掉非法字符
2.先验证user是否存在
3.验证pass是否正确
数据库中的USER和PASS字段最好是加密的字符串,然后讲TEXTBOX里输入的字符也用同样方法加密再去SELECT,这样就不怕用户在TEXTBOX里动坏脑筋了
需要对用户名和密码框输入的字符进行过滤吧!
在取文本时,将一个替换成两个
如: text1.Text.Replace("","") 可以有效的防止SQL语句攻击
首先验证用户名和密码的字符是否符合要求,然后使用参数的方式将值进入数据库
可以为你提供一个字符处理/验证类和数据访问层,请短信联系或者加我QQ889508记得说明来自CSDN
典型的问题
我在用户名输入
or 1=1 --
改用
select count(*) from 表 where 用户名= @id and 密码 =@password这种方法。
呵呵,这是典型的注入式攻击,最好不要直接用SQL语句查数据库,加个密是个不错的办法,简单一点就是将替换成,或者直接不允许输入