由注册用户名不能使用单引号和双引号引发的思考

来源:互联网 发布:黑米软件新闻 编辑:程序博客网 时间:2024/05/29 11:20

             机房收费系统敲完很久了,也很久没有在CSDN上写博客了。关于机房收费系统能写的东西很多,同期的也写了很多。在测试机房收费系统时如果用户名里含有单引号或者双引号时,每次系统都会报错或者崩溃。

        究其原因是我们目前写的查询语句一般如下:

        StrSQL="select * from Student_Info where UserName='" & Trim(txtUserName.text) & "'"

        当出现单引号或双引号在UserName中时上面那段代码是错误的的,当然我们最简单的解决方法是禁止用户名中使用单引号和双引号,如下:

Private Sub txtUserName_KeyPress(KeyAscii As Integer)    If KeyAscii = 39 Or KeyAscii = 34 Then        MsgBox "用户名格式输入不正确!"        KeyAscii = 0    '使输入无效    End IfEnd Sub

        当然这样是解决了问题,但是还有没有其他方法来解决这个问题了?如果有为什么不用呢?目前我还没有找到,在网上也没有搜索到相关的解决方法(可能是搜的地方和方法不正确吧)。

        带着这个问题我又发现我测试的几个网站的用户名中也都不能使用单引号和双引号,当然还有其他更多的特殊符号也被禁用了。一次偶然的听到了关于“SQL注入”这个词,我想这会不会为了防止SQL注入发生才改用禁用的呢?后来查了一下关于SQL注入的概念觉得似乎关系不大(目前我的理解),这个可能的设想就这样被我扼杀了。

       希望读者能给我答案!

原创粉丝点击