黑马程序员技术交流社区

标题: 什么是sql注入 [打印本页]

作者: 靳石磊    时间: 2013-1-28 17:39
标题: 什么是sql注入
什么是sql注入,有怎么解决sql注入的问题。。。
作者: 张世钦    时间: 2013-1-28 18:09
目前我的水平还没法回答,免费土飞机
http://baike.baidu.com/view/3896.htm
自己看看
作者: 林嘉健    时间: 2013-1-28 18:31
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
作者: 乔培培    时间: 2013-1-29 10:52
1、使用params关键字,这样程序会将所得到的全当做字符串,而不是SQL关键字
2、过滤特殊字符和Sql关键字,使用正则表达式
3、使用存储过程进行数据查询
作者: 贾文泽    时间: 2013-1-29 11:27
SQL注入是目前比较常见的针对数据库的一种攻击方式。在这种攻击方式中,攻击者会将一些恶意代码插入到字符串中。然后会通过各种手段将该字符串传递到SQLServer数据库的实例中进行分析和执行。只要这个恶意代码符合SQL语句的规则,则在代码编译与执行的时候,就不会被系统所发现。
对于sql注入的防范,针对不同的攻击方式有不同的防御方法,一般情况下接受url参数时会过滤掉其中的特殊字符,还有像不要用拼接SQL字符串,可以用prepareStatement,参数用set方法进行填装 之类的一些方法,具体原理建议楼主看下传智韩顺平老师的数据库编程陷阱视频。
作者: 王晨    时间: 2013-1-29 14:32
SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是SQL注入。
eg:
我们写登陆语句时,常写 sql="select * from user where name='"&name&"' and pwd='"&pwd&"'"   
其实,在where后面加一个or语句就可以实现SQL注入攻击,因为or是一个逻辑运算符,在判断多个条件的时候,只要前一个等式成立,即name='admin'正确,整个等式就返回真,后面的and就不再进行判断了,也就是说我们绕过了密码验证,只要我们知道用户名就可以登陆该系统。

防范方法:
 1.使用参数化的过滤性语句
  要防御SQL注入,用户的输入就绝对不能直接被嵌入到SQL语句中。恰恰相反,用户的输入必须进行过滤,或者使用参数化的语句。参数化的语句使用参数而不是将用户输入嵌入到语句中。在多数情况中,SQL语句就得以修正。然后,用户输入就被限于一个参数。
 2.防范SQL注入,还要避免出现一些详细的错误消息,因为黑客们可以利用这些消息。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。
 3.使用专业的漏洞扫描工具。但防御SQL注入攻击也是不够的。攻击者们目前正在自动搜索攻击目标并实施攻击。其技术甚至可以轻易地被应用于其它的Web架构中的漏洞。企业应当投资于一些专业的漏洞扫描工具,如大名鼎鼎的Acunetix的Web漏洞扫描程序等。一个完善的漏洞扫描程序不同于网络扫描程序,它专门查找网站上的SQL注入式漏洞。最新的漏洞扫描程序可以查找最新发现的漏洞。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2