vb学生管理系统防止SQL注入两种方法

根据我个人的理解SQL注入是一种利用程序员编程逻辑的漏洞来不利用用户名或密码来进行非法进入系统的行为。

     优化之前学生登录的时候如果在用户名文本框里输入“ ' or 1=1 -”就可以直接登录系统。基本原理很简单:就是利用SQL语句的or只要成立一个语句就正确,-可以把后面的语句注释掉,所以就可以轻易入侵了。

     我们要做的就是避免这种情况的发生,主要是避免“ ' “符号的使用还有其他的符号使用。

第一种办法:

这是我第一次优化的时候的写法,避免了“ ' ”的输入,逻辑还算严密。但是它还有一个缺点就是代码在keypress事件里面,这就导致用户名输入的时候只能输入一个。刚开始的时候我的用户名本身就是一个数字所以没有发现这个漏洞,学习一定得找个细心的小伙伴,测试系统多找几个人来测试,不同的人会发现不同的问题。

Private Sub txtusername_KeyPress(KeyAscii As Integer)

    txtusername.Text = ""

    If KeyAscii = 39 Then
        MsgBox "是非法字符,请重新输入!"
        txtusername.Text = ""
        txtusername.SetFocus
        txtpassword.Enabled = False

        If txtpassword.Enabled = False Then
            cmdok.Enabled = False
        Else
            cmdok.Enabled = True
        End If

    Else
        txtpassword.Enabled = True
        cmdok.Enabled = True
    End If

End Sub
第二种办法:

这种办法克服了上面办法的不足,可以控制任意字符的输入!

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






评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值