![【学生信息管理系统】总结三 - 杨光彩 - 杨光彩 廊坊师范学院信息技术提高班十三期](http://img0.ph.126.net/84-v973fAj6GTikFhzxvmw==/1997064959864141799.png)
![【学生信息管理系统】总结三 - 杨光彩 - 杨光彩 廊坊师范学院信息技术提高班十三期](http://img0.ph.126.net/1J4dW_j8uAN8WnnnvSDXiw==/1709960483617691661.png)
![【学生信息管理系统】总结三 - 杨光彩 - 杨光彩 廊坊师范学院信息技术提高班十三期](http://img0.ph.126.net/xD7NZJSTusQJcBWXDyJtbg==/1677309386319107235.png)
![【学生信息管理系统】总结三 - 杨光彩 - 杨光彩 廊坊师范学院信息技术提高班十三期](http://img1.ph.126.net/YtNA2viGiPNDh27R2f9xlw==/4861635797847985834.png)
定义:所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.
问题背景:
我们在学习系统的登录界面时有这么一段代码:
txtSQL = "select*from user_info where user_ID='" & txtUserName.Text & "'"
当你在登陆学生管理系统的时候,添加的用户名若和你数据库中的数据不符时,就会弹出一个窗体,告诉你没有这个用户;但是当你在用户名中输入数字或者字母外加英文状态下的单引号,比如:“a'”,“'or 1=1#”
两个单引号括起来的部分是判断输入的用户名是否和数据库中一致,但你输入“a'”时,就会在两个单引号之间添加了一个单引号,结果可想而知,数据库无法连接,所以就无法登陆。
解决办法:
'sql注入简便方法 Private Sub txtUserName_KeyPress(KeyAscii As Integer) If KeyAscii = 39 Then '如果输入的是单引号 KeyAscii = 0 End If End Sub
'sql注入全面的方法
Private Sub txtusername_Change()
Dim s As String
Dim ss As Long
Dim l As Long
Dim i As Long
s = ",。、;’【】·!@#¥%……&*()——+|~《》?:“{}',.;\/:*?""<>|{}[]!@#$%$^&()~`_-+=" '需要禁止的字符都放这里吧
ss = txtUserName.SelStart 'selstart是选中文本的开始位置
For i = 1 To Len(s) 'len(s)求s的长度
l = Len(txtUserName.Text)
txtUserName.Text = Replace(txtUserName.Text, Mid(s, i, 1), "") 'replace是SQL语句里面的替换,把txtusername.text里面的mid(s,i,l)替换为“”
'Mid就是从一个字符串中取子字符串,比如a="aabbcc",我们想取出"bb"就可以用Mid("aabbcc",3,2)
Next
txtUserName.SelStart = ss
End Sub
在模块部分添加如下代码:
Public Function ConnectString() As String '这是用于异地发布的代码 ConnectString = "provider=sqloledb;server=192.168.24.190;UID=sa;PWD=1;database=Student" End Function
我的异地发布也没有这么简单啊,一直不能成功,是我数据库本身的问题,弄了一个下午外加一个晚上,结果过了一天之后数据库莫名地不能用了,我胡乱整顿了一番之后数据库可以用了,异地发布居然也可以了。这就告诉我们:无论什么时候都要有不抛弃,不放弃的精神,要做一只打不死的小强!
好啦,问题就总结到这里,真的是问题多多啊,不过收获也同样很多!