由注册用户名不能使用单引号和双引号引发的思考
2013-11-17 20:39
323 查看
机房收费系统敲完很久了,也很久没有在CSDN上写博客了。关于机房收费系统能写的东西很多,同期的也写了很多。在测试机房收费系统时如果用户名里含有单引号或者双引号时,每次系统都会报错或者崩溃。
究其原因是我们目前写的查询语句一般如下:
StrSQL="select * from Student_Info where UserName='" & Trim(txtUserName.text) & "'"
当出现单引号或双引号在UserName中时上面那段代码是错误的的,当然我们最简单的解决方法是禁止用户名中使用单引号和双引号,如下:
当然这样是解决了问题,但是还有没有其他方法来解决这个问题了?如果有为什么不用呢?目前我还没有找到,在网上也没有搜索到相关的解决方法(可能是搜的地方和方法不正确吧)。
带着这个问题我又发现我测试的几个网站的用户名中也都不能使用单引号和双引号,当然还有其他更多的特殊符号也被禁用了。一次偶然的听到了关于“SQL注入”这个词,我想这会不会为了防止SQL注入发生才改用禁用的呢?后来查了一下关于SQL注入的概念觉得似乎关系不大(目前我的理解),这个可能的设想就这样被我扼杀了。
希望读者能给我答案!
究其原因是我们目前写的查询语句一般如下:
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 If End Sub
当然这样是解决了问题,但是还有没有其他方法来解决这个问题了?如果有为什么不用呢?目前我还没有找到,在网上也没有搜索到相关的解决方法(可能是搜的地方和方法不正确吧)。
带着这个问题我又发现我测试的几个网站的用户名中也都不能使用单引号和双引号,当然还有其他更多的特殊符号也被禁用了。一次偶然的听到了关于“SQL注入”这个词,我想这会不会为了防止SQL注入发生才改用禁用的呢?后来查了一下关于SQL注入的概念觉得似乎关系不大(目前我的理解),这个可能的设想就这样被我扼杀了。
希望读者能给我答案!
相关文章推荐
- error MSB8011: 未能注册输出。请尝试启用“逐用户重定向”,或者使用提升的权限从命令提示符处注册该组件
- JAVA用户注册登录使用MD5非对称加密解密
- 使用Servlet实现用户注册功能
- ubuntu系统创建新用户「添加ROOT权限」「配置」「不能使用TAB键解决」
- 使用Ajax验证用户是否可以注册
- 关于Hard Code的思考 - 程序员的管理不能简单使用制度
- j2ee使用struts实现用户的登陆及注册
- 使用JSP处理用户注册和登陆
- 使用Forms Authentication实现用户注册、登录 (二)用户注册与登录
- 用FileMenu Tools玩转系统右键菜单 软件还有其他的内置命令,这里由于篇幅原因不能全部介绍了,比如注册DLL、反注册命令,当注册表中的某个dll或ocx文件受损时,可以使用该命令进行恢
- 由“Beeline连接HiveServer2后如何使用指定的队列(Yarn)运行Hive SQL语句”引发的一系列思考
- GUI470不能使用快捷登录,修改注册…
- vmware中如何检查cpu的使用状况-一个考题引发的思考
- 使用PHP实现用户登录和注册的功能
- ASP.NET 使用WebServices+Ajax实现无刷新验证用户是否已注册
- Linux下NIS客户端机器不能使用普通用户(非root用户)登录!
- JSP学习笔记(三)-----使用JSP处理用户注册和登陆
- 用户注册画面设计(一): 使用bootstrap2.0设计用户注册画面
- 由getchar()函数的使用而引发的思考.
- 关于mk文件中findstring 使用中不能带引号的问题