学生信息管理系统–SQL注入

当你在登陆学生管理系统的时候,添加的用户名若和你数据库中的数据不符时,就会弹出一个窗体,告诉你没有这个用户;但是当你在用户名中输入数字或者字母外加英文状态下的单引号,比如:“a’”,“’or 1=1#”

 

然后你再运行的话,就会弹出下面的窗体

这就是SQL注入,百度上给出的定义是:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

 

在我们做学生管理系统的时候,在登入窗体中有这么一段语句

 

 

两个单引号括起来的部分是判断输入的用户名是否和数据库中一致,但你输入“a’”时,就会在两个单引号之间添加了一个单引号,结果可想而知,数据库无法连接,所以就无法登陆。

 

解决方法:

1、将txtUserName.text的文本框替换成ComboBox的下拉式的控件,直接从数据库中提取用户名,缺点就是这样造成用户名泄露!

2、加强对用户输入的验证。一些关键字直接给他过滤掉,比如drop 、datebase、delete,and,–,“’”  等一些关键字,写个方法直接过滤掉~!把单引号替换成两个单引号!数值型要强制转换!!!

3、在编写SQL语句时,使用参数化的语句来传递用户输入的变量,也就是说,用户的输入绝对不能够直接被嵌入到SQL语句中。

4、限制表单或查询字符串输入的长度。

5、将用户登入名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这就相当于对用户输入的数据进行了“消毒”处理。

 

标签