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

学生管理系统之 vb 如何防止SQL 语句注入(以目前之力所能想到的方法),第1张

概述前天师傅在查看作品的时候,给提到了SQL注入的问题,只见师傅在登录窗体的用户名文本框中输入:' or 1=1 -- 就这么一段看似乱七八糟的东西,然后竟登上了系统(数据库中没有这个用户),师傅也不给讲,没办法,自己整呗。 后来了解到,所谓SQL注入:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的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

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

不足之处:

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

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

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

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

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

总结

以上是内存溢出为你收集整理的学生管理系统之 vb 如何防止SQL 语句注入(以目前之力所能想到的方法)全部内容,希望文章能够帮你解决学生管理系统之 vb 如何防止SQL 语句注入(以目前之力所能想到的方法)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1283886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存