网站地图    收藏   

主页 > 后端 > 网站安全 >

学生信息管理系统--SQL注入 - 网站安全 - 自学p

来源:自学PHP网    时间:2015-04-17 10:15 作者: 阅读:

[导读] 当你在登陆学生管理系统的时候,添加的用户名若和你数据库中的数据不符时,就会弹出一个窗体,告诉你没有这个用户;但是当你在用户名中输入数字或者字母外加英文状态下的单引...

当你在登陆学生管理系统的时候,添加的用户名若和你数据库中的数据不符时,就会弹出一个窗体,告诉你没有这个用户;但是当你在用户名中输入数字或者字母外加英文状态下的单引号,比如:“a'”,“'or 1=1#”
 
 
 
 
然后你再运行的话,就会弹出下面的窗体
 
 
这就是SQL注入,百度上给出的定义是:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
 
 
 
在我们做学生管理系统的时候,在登入窗体中有这么一段语句
 


 
两个单引号括起来的部分是判断输入的用户名是否和数据库中一致,但你输入“a'”时,就会在两个单引号之间添加了一个单引号,结果可想而知,数据库无法连接,所以就无法登陆。
 
 
 
解决方法:
 
1、将txtUserName.text的文本框替换成ComboBox的下拉式的控件,直接从数据库中提取用户名,缺点就是这样造成用户名泄露!
 
2、加强对用户输入的验证。一些关键字直接给他过滤掉,比如drop 、datebase、delete,and,--,“’”  等一些关键字,写个方法直接过滤掉~!把单引号替换成两个单引号!数值型要强制转换!!!
 
3、在编写SQL语句时,使用参数化的语句来传递用户输入的变量,也就是说,用户的输入绝对不能够直接被嵌入到SQL语句中。
 
4、限制表单或查询字符串输入的长度。
 
5、将用户登入名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这就相当于对用户输入的数据进行了“消毒”处理。
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论