SQL注入的方法和解决方案
来源:互联网 发布:图书馆管理系统数据库 编辑:程序博客网 时间:2024/05/29 02:32
验收项目时师傅提到的要求有一点是防止SQL注入并找到解决方案,于是找资料好好了解了一下。
(1)什么是SQL注入?
SQL注入就是在系统登陆窗口或其他一切可输入文本中输入一段SQL语句,由于“SQL注入”是利用未过滤/未审核用户输入的攻击方法,其实就是让应用运行本不应该运行的SQL代码,如果应用毫无防备地创建了SQL字符串并且运行了它们,就会造成一些出人意料的结果。
(2)SQL注入的表现形式?
例如,在机房登录窗口输入文本处为例,
源代码:txtSQL = "select * from user_Info where userID = '" & txtUserName.Text & "'",我们在第一个文本处用户名,如果机房的合法用户张三登陆时在txtUserName中输入“张三”,反映到代码中为:
txtSQL = "select * from user_Info where userID = ' 张三 ' ,接下来就会在数据库中检索是否有张三这个用户,如果有,而且密码对的话就会进入系统。
但是如果我是一个系统入侵者,而且不知道合法的用户名和密码,我就可已在txtUserName处输入a' or 'b'='b,这样一来,反映到SQL语句中就是
txtSQL = "select * from user_Info where userID = ' anything ' or 'b'='b',这样,不管userID是不是正确,我都会保证数据库检索通过,因为'b'='b'这一条件肯定是满足的。
同理,SQL注入还可以应用到其他方面,比如对数据表的删除或窃取用户信息等等非法操作,原理都是一样,比如删除表,只要输入
anything';DROP TABLE user_Info;这样SQL语句就成了txtSQL = "select * from user_Info where userID = ' anything '';DROP TABLE user_Info;,同时执行两个SQL语句,前边虽然无效,但是后边就把我们数据库中的user_Info表删除掉了,如果加上select * from student_Info where studentNo like '%',我们还能窃取所有的student用户的个人信息。
(3)SQL注入的防止方法。
SQL注入对于正式企业来说危害简直是致命的,但是其防止方法很简单,一般SQL注入语句占的字符都很长,我们可以限制可输入文本的输入长度,而且,SQL注入需要输入‘ 和空格等字符,我们可以利用ascii键码值来设置不让输入这些字符,如下:
限制输入长度可以进行长度验证:
利用ascii码值限制输入字符:
除了以上方法,解决SQL注入方法还有很多 ,例如如果输入卡号时,我们还可以限制登陆者必须使用数字,在SQL中限制SQL同时执行语句条数等方法,但其他不做过多探讨。下面是度娘对防止注入的两条建议:
设置数据库时尽量使用参数化的过滤性语句,还要避免使用解释程序,因为这正是黑客们借以执行非法命令的手段。
避免出现一些详细的错误消息,因为黑客们可以利用这些消息。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。
- SQL注入的方法和解决方案
- sql依赖注入的解决方案
- SQL注入的方法
- SQL注入原理和方法
- SQL注入原理和方法
- SQL注入原理和方法
- SQL注入原理和方法
- SQL注入原理和方法
- SQL注入原理和方法
- ASP防止SQL注入的360解决方案
- SQL注入攻击的种类和防范方法
- 关于sql注入我的理解和方法
- php 防止sql注入的方法和步骤
- SQL的注入式攻击方式和避免方法
- SQL注入的基本方法和操作步骤
- sql注入的方法大全
- 防止sql注入的方法!
- sql防注入的方法
- 2012 素数判定
- 南阳 oj 擅长排列的小明 题目19
- 【OC05-1】字典、可变字典 (连载六)
- 列表初始化
- 怎么激活win10企业版系统
- SQL注入的方法和解决方案
- 谈谈 final、finally、finalize 的区别
- Android Studio在集成了ShardSDK的项目中进行代码混淆
- bzoj-1132 Tro
- 窗口创建贴图
- 【OC05-2】NSSet、NSNumber、NSValue、NSDate、异常处理(连载七)
- 跟我一起写makefile--学习笔记1--makefile概况
- OC学习笔记三 (3 9.OC5-构造方法和description方法 变量方法作用域)
- 产生冠军