机房收费系统优化之字符限制

本以为学生验收时登录窗体限制了字符,师傅验收的时候就不会验收了,没想到师傅又点了特殊字符,系统一下子就崩了。

  由于数据库不是自己建的,使用的别人的数据库所以我发现登录的时候输入字母h或是特殊字符’;、。等会报错,这是因为数据库中限制  userID的类型为int ,要设置成char型也就是说字符串型才可以。

师傅说如果不限制字符很容易产生sql注入。有的输入特殊字符 ' 和一些字母连在一起就能进入系统,所谓SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,这样很容易导致信息的泄露所以限制字符是必须的。优化过程中我是限制的只能输入字母和数字(在我看来只用限制英文状态下的' 就可以了,可以找到 ' 的ascii 进行限制,sql注入就是因为在查询是’的使用不当让系统自动进入系统)。

  可以限制用户名和密码只能输入数字,这个比较简单,用学生的代码就可以了

         If  Not IsNumeric(Trim(txtusername.Text)) Then                  
             MsgBox "请输入数字!", vbOKOnly + vbExclamation, "警告"
             Exit Sub
             txtusername.SetFocus

             txtusername.Text=“”

         End If

  优化后我是限制只能输入数字和字母的

   Dim keyas As Integer

          If keyas < 0 Then
     
     txtusername.SetFocus
     
     txtusername.SelStart = 0
     
     txtusername.SelLength = Len(txtusername.Text)
     
     MsgBox "只能输入数字和字母!", vbOKOnly + vbExclamation, "警告"
   ElseIf keyas > 32 And keyas < 48 Then
   
      txtusername.SetFocus
     
    txtusername.SelStart = 0
     
     txtusername.SelLength = Len(txtusername.Text)
     
    MsgBox "输入的是特殊字符!", vbOKOnly + vbExclamation, "警告"
   ElseIf keyas > 57 And keyas < 64 Then
   
     txtusername.SetFocus
   
     txtusername.SelStart = 0
   
     txtusername.SelLength = Len(txtusername.Text)
   
     MsgBox "只能输入数字和字母!", vbOKOnly + vbExclamation, "警告"

      ElseIf keyas > 90 and keyas<97 Then
      txtusername.SetFocus
      txtusername.SelStart = 0
      txtusername.SelLength = Len(txtusername.Text)
      MsgBox "输入的是特殊字符!", vbOKOnly + vbExclamation, "警告"

      Private Sub txtusername_keypress(keyascii As Integer)
           keyas = keyascii
      End Sub

效果如下

机房收费系统优化之字符限制_第1张图片

  说到数据库,如果限制的类型和查询类型部分,虽然vb没有报错,但是查询的信息不完整。比如学生基本信息维护,查询卡号时数据库中类型要设置成int类型不能设置其他类型。



你可能感兴趣的:(机房收费系统优化之字符限制)