SQL注入攻击及防护策略探析.docVIP

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

SQL注入攻击及防护策略探析   摘 要:针对WEB应用安全问题中最常见到的SQL注入攻击,本文对攻击的原理、手段和过程做了介绍和剖析,并针对SQL注入的特点指出了对于提高网站安全的策略 关键词:SQL注入;WEB安全;网站防护措施 引言 近年来,WEB应用成为了人们日常生活、工作、学习中必不可少的工具和信息来源,随之而来的是信息安全问题层出不穷。2016年国内某专业信息安全平台被发现存在SQL注入漏洞,导致大量用户信息被泄露。由于绝大多数当今网站都是通过数据库存储用户信息和网站数据,这导致SQL注入攻击成为网站最常见到的安全风险来源之一 1.SQL注入攻击原理 SQL注入攻击是通过操作输入来修改SQL语句,用以达到执行代码对WEB服务器进行攻击的方法。简单的说就是在post/get web表单、输入域名或页面请求的查询字符串中插入SQL命令,最终使web服务器执行恶意命令的过程。可以通过一个例子简单说明SQL注入攻击 假设某网站页面显示时URL 为http://?test=123,此时URL实际向服务器传递了值为123的变量test,这表明当前页面是对数据库进行动态查询的结果。由此,我们可以在URL中插入恶意的SQL语句并进行执行。另外,在网站开发过程中,开发人员使用动态字符串构造SQL语句,用来创建所需的应用,这种情况下SQL语句在程序的执行过程中被动态的构造使用,可以根据不同的条件产生不同的SQL语句,比如需要根据不同的要求来查询数据库中的字段。这样的开发过程其实为SQL注入攻击留下了很多的可乘之机 2.SQL注入攻击常见方法和过程 2.1寻找SQL注入漏洞 确定网站存在SQL注入漏洞的途径一般有两种,第一种是可以利用网站的错误提示,如果网站开启了错误显示,攻击者就可以通过在输入参数的地方反复调整发送的参数,通过页面出现的错误信息,推测出网站使用的数据库和开发语言信息。如果网站管理员关闭了错误信息提示,攻击者可以采用盲注的技巧来进行反复尝试。盲注是利用数据库查询的输入审查漏洞从数据库提取信息或提取?c数据库查询相关的信息的技术。如在URL 中输入login.php?username=admin and 1=1和login.php?username=admin and 1=2,如果前者能正常返回信息,而后者不能,基本上就可以认定网站存在SQL注入漏洞。这是因为1=2的表达式不成立,所以即使username传入了正确的数值也是无法通过,因此可以判读出该网站可以通过usernamer参数进行注入 2.2判断数据库 获得网站的数据库类型是SQL注入提取重要数据的前提条件之一,可以通过常见的技术架构进行判断,如常和SQL Server一起使用,而PHP往往使用MySQL,JSP会配合Oracle或MySLQ。而WEB服务环境也可以提供线索,如运行IIS的服务环境往往采用SQL Server数据库,使用TOMCAT的更大的可能是MySQL或Oracle。另外,还可以通过详细的错误信息判断数据库的版本,比如添加单引号作为注入参数,根据数据库产生的语法错误信息,就可以判断出数据库的种类 2.3攻击数据库系统 攻击数据库的目的是为了获得数据库中有价值的数据信息,进而可以为控制整个WEB系统做铺垫。获得数据库中数据可以遵循层次化的方法,首先提取数据库的名称,然后提取表、列,最后才是数据本身。通常,可以通过访问专门保存表示各种数据库结构的表,比如MySQL中,这些信息保存在information_schema数据库中。在该数据库中的schemata表中存储着数据库名,tables表中存储着表名,columns表中存储着字段名,通过以上的信息,再获得数据库表中的内容就轻而易举了 2.4控制WEB系统 在获得数据库中数据信息后,可以通过对具有管理权限的账号信息入手,通过登录帐号,使用网站后台上传功能上传木马程序,或添加恶意代码,最终甚至可以获得服务器的完全控制权限 3.SQL注入攻击防护策略 SQL注入漏洞的产生,都是因为系统要接受来自客户端输入的变量或者URL传递的参数,为此,开发者一定要遵循“外部数据不可信”原则,对于用户输入的内容或传递的参数,要时刻保持警惕。因此对于SQL注入的防护策略通常要确保系统传递的变量符合开发者的设计要求 3.1变量检测 对于数据库中有固定数据类型的变量,在SQL语句执行前,应该对变量的类型进行严格的检查,确保变量是开发者预想的。比如系统中存在名为id的数字字段,那么系统在执行SQL语句前确保变量id的类型是int型的 3.2过滤特殊符号 当发生SQL注入攻击时,攻击者在提交的SQL语句会包含一些特殊的字符或字

文档评论(0)

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

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

1亿VIP精品文档

相关文档