分类:
.NET
登录安全问题
我们在获取数据库中的登录数据时候,因为用的是简单的查询语句,所以很容易破解
因为我们查询的登录语句是
select * from userInfo where name='admin' and pwd='123456'
因为登录是通过查询数据库的用户表,也就是查询上述代码是否存在,之所以不安全,
是因为程序员很容易通过改变数据库的查询语句是条件满足, 比如通过
'' or '1'='1'
便能改变查询语句条件从而登录成功;
解决问题的办法也有很多
同样的,也是从查询语句开始着手,也就是用sqlparameter;
sqlparameter是用来给数据库中定义的变量传值用的,比如一个数据库中定义了@ID。在ASP.NET里用 new sqlparameter(“ID”,this.lblID.Text); 给@ID赋值
列:
string sql = "SELECT count(*) FROM STUINFO where name=@a and pwd=@pp"; SqlParameter[] pms ={ new SqlParameter("@a", name), new SqlParameter("@pp", pwd) };
如此在登录的时候便不能在听过改变数据库的查询语句而达到登录的效果,因为我们在sql语句里
传的值相当于一个变量,而后在给变量赋值。所以通过客户输入的值给变量赋值,来达到登录的唯一性。
评价