浅议网站SQL注入攻击防护.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅议网站SQL注入攻击防护

浅议网站SQL注入攻击防护摘要:随着信息技术和互联网的发展,网站提供的信息和服务越来越丰富和便利,但是恶意用户对网站的攻击手段也越来越多样和复杂。本文以目前对网站威胁最大的攻击手段:SQL注入攻击为研究对象,对其进行原理分析,并根据攻击原理给出一些具有针对性的防护方法。 关键词:网站安全;SQL注入攻击;SQL注入攻击防护 中图分类号:TP393 文献标识码:A 文章编号:1007-9599 (2012) 13-0000-02 一、引言 随着信息技术和互联网的飞速发展,越来越多的单位和个人通过搭建网站平台向用户提供信息服务,这种方式极大地方便了用户获取各种所需信息。同时,这种方式也吸引了一些恶意用户的关注,在利益的驱动下,恶意用户针对网站的攻击的事件屡屡发生。根据开放式Web应用程序安全项目(OWASP)组织2010年发布的最新Web应用十大关键风险排名可以看出,对网站安全威胁最大的风险排名第一位的是:注入攻击。而SQL注入攻击是注入攻击中最常见的一种形式,因此网站对于SQL注入攻击的防护也显得尤为重要。 二、SQL注入攻击原理 SQL注入攻击是指恶意用户通过在客户端正常的web表单、域名或页面请求字符串中添加非法的SQL语句或利用SQL语法重新构造SQL语句,并提交给服务器端执行,通过对服务器端返回的结果进行分析,进而获取重要的数据库信息、破坏数据库和控制服务器的攻击方法。 由于SQL注入攻击利用的是合法的SQL语句,使得对服务器的攻击不能被防火墙检测出来,因而这种攻击具有难以发现,难以识别的特性。从应用层面来说,只要是基于SQL语言标准的数据库都可能是潜在的被攻击对象,因此危害性很大。 那么SQL注入攻击到底是怎样工作的呢?我们这里以在ASP+SQL SERVER平台上最常见的用户登录功能来做一个演示。一般情况下,登录窗口都会要求我们输入用户名和密码,然后提交给数据库查询用户是不是存在。在数据库端的正常查询语句为: SELECT * FROM 用户表 WHERE 用户名 = ‘‘user’’ AND 密码 = ‘‘password’’ 程序员在用ASP实现的时候,一定是用连接字符串然后再加上SQL命令,最后执行查看返回的结果是否为空。那么SQL语句嵌套在ASP代码中的形式就像这样: var sql = “SELECT * FROM 用户表 WHERE 用户名 = ‘‘“ + loginname + “‘‘ AND 密码 = ‘‘“ +loginpwd + “‘‘“;(其中loginname与loginpwd分别存储了前台文本框传递到后台的用户输入的用户名和密码。) 但是当用户在前台输入的内容为:loginname=‘‘ or 1=1 – – ,loginpwd的内容任意输入时。则在ASP中的查询语句将变为: SELECT * FROM 用户表 WHERE 用户名= ‘‘ ‘‘ or 1=1 – – AND 密码 = ‘‘任意输入内容’’ 这样使得密码验证被注释掉了,而用户名验证则被“1=1”这个恒等式所取代。用户名和密码的验证成为了摆设,恶意用户则可以很顺利的登录网站。 上例只是SQL注入攻击的一种最简单形式。对于存在着SQL注入攻击漏洞的网站,攻击者还可以通过专用工具或手工构造特殊代码不断的猜测尝试,从而获得数据库名称,表名,表中的字段名,甚至是具有系统管理权限的用户帐号和密码、上传病毒、木马或恶意文件,给网站带来巨大危害。 三、SQL注入攻击的防范 SQL注入漏洞的产生通常是由于程序员对注入攻击手段不了解,数据验证和过滤不严格,服务器设置不完善导致的。因此对SQL注入攻击的防范也应当从这几个方面来入手。 (一)对数据库查询改动态查询为参数化查询 参数化查询是指连接数据库查询时,在需要填入数值或数据的地方不是直接赋值,而是使用参数来给值。 我们前面所举的SQL注入攻击的例子就是使用动态查询所引发的。但是在使用参数化查询的情况下,数据库服务器不会将参数的内容作为SQL查询语句的一部份来处理,而是在数据库完成SQL语句的编译后,才套用参数的内容来运行。因此就算参数中含有非法的SQL语句,数据库也不回去执行。因此参数化查询目前被视为防范SQL注入攻击的最有效的方法。 (二)对用户提交的数据进行验证和过滤 SQL注入攻击主要是通过在用户提交的数据中嵌入非法的SQL语句来实现,所以对用户提交的数据进行验证和过滤能够有效的防范SQL攻击的出现。其方法是在程序中对用户提交的数据进行检测,如果检测出含有与SQL相关的敏感字符或字符串(如:、、=、select、delete、drop等)时,就认为存在SQL注入攻击行为。程序则可以通过阻止SQL语句的执

文档评论(0)

docman126 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档