加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

学生管理系统之 vb 如何防止SQL 语句注入(以目前之力所能想到的

发布时间:2020-12-16 22:23:23 所属栏目:大数据 来源:网络整理
导读:前天师傅在查看作品的时候,给提到了SQL注入的问题,只见师傅在登录窗体的用户名文本框中输入:' or 1=1 -- 就这么一段看似乱七八糟的东西,然后竟登上了系统(数据库中没有这个用户),师傅也不给讲,没办法,自己整呗。 后来了解到,所谓SQL注入: 就是通

前天师傅在查看作品的时候,给提到了SQL注入的问题,只见师傅在登录窗体的用户名文本框中输入:' or 1=1 -- 就这么一段看似乱七八糟的东西,然后竟登上了系统(数据库中没有这个用户),师傅也不给讲,没办法,自己整呗。

后来了解到,所谓SQL注入:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。对此也不是很明白,但从师傅给的上面例子来看,我理解的是:用英文单引号从新构造SQL语句,让系统执行你所重构的没有安全限制的SQL语句。其中的' 是英文单引号; or后面的内容不一定是1=1 只要一个条件为真的语句就行;-- 是将SQL语句后面的条件部分给注释了。

想了半天,关键点还是在' 英文单引号上面,因为这个是重构SQL语句的关键,师傅给提到说过用参数传递,网上也查到了说用存储过程,但是作为一个在成长中的菜鸟,都不是很理解其他的办法。跟目前自己所学习的联系起来,苦苦折腾了一上午,有了点头绪:既然英文单引号是关键,那么可不可以禁止输入英文单引号呢?这样可以跟以前学习的assic码联系起来;但是问题又出来了,自己不知道英文单引号的ASSIC码是多少!从网上查,后来查到在临时窗口中输入:debug.print "Ascii of """" is:";asc("") 可以返回所想要的ASSIC码,折腾了一会,查出来了英文单引号的ASSIC码是39 ,于是,在用户登录窗口试了一下:

Private Sub txtUserName_KeyPress(KeyAscii As Integer)

If KeyAscii = 39 Then

MsgBox"为了防止SQL语句注入,禁止输入英文单引号!"

txtUserName.text=""

txtUserNama.setfocus

End If

End Sub

测试结果:当输入英文单引号的时候,提示对话框弹出。

不足之处:

1提示对话框弹出之后,下面的照常执行,但是文本框内容还是有所输入的英文单引号,不知为何清楚不了

2防止输入英文单引号,但是还是没有办法防止,因为可以复制粘贴粘到文本框上再进行SQL注入

3要求用户手动清空英文单引号再进行输入

4把英文单引号复制到密码框的时候,容易造成系统崩溃~~~~~~~

黔驴技穷,没办法了,以目前的能力就只能给出这么一个不完美的解决方法和思路,等待着自己的进步!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读