A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈凯 中级黑马   /  2012-12-31 22:45  /  1739 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何防止呢?能不能举个例子?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 王晨 于 2012-12-31 23:00 编辑

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注入式漏洞。最新的漏洞扫描程序可以查找最新发现的漏洞。



评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我是来学习的。。。。看杨中科老师视频第五季的第八个ado.net 视频中就介绍sql注入了 还举了一个例子
例如用拼接字符串的方法验证用户密码就会出问题  输入  '1 or '1'='1  就会欺骗过服务器  
回复 使用道具 举报
以登录为例,假如登录语句是
String sql="select count(user.id) from sys_user user where user.user_name='?' and user_pwd = '?' "
,如果参数 user_name 和usre_pwd没有经过加密处理
当user_name为 英文的 '  则会报sql错误,“引号内的字符串没有正确结束”等等。这样的错误如果给前台捕捉了,那么你的sys_user表就管不住了,当参数user_name or user_pwd 为 ' or 1=1 -- 时 ,拼成的sql语恒成立,像这样的情况就是一种比较简单的注入攻击行为,所 以最好把前台的参数,转换为一种数据库用不到的符号或者字符串(不是相关符号或关键字),比如,将英文的符号转成中文。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马