SQL注入攻击与防护策略分析

来源 :科学与财富 | 被引量 : 0次 | 上传用户:pausecn
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:针对WEB应用安全问题中最常见到的SQL注入攻击,本文对攻击的原理、手段和过程做了介绍和剖析,并针对SQL注入的特点指出了对于提高网站安全的策略。
  关键词:SQL注入;WEB安全;网站防护措施
  引言
  近年来,WEB应用成为了人们日常生活、工作、学习中必不可少的工具和信息来源,随之而来的是信息安全问题层出不穷。2016年国内某专业信息安全平台被发现存在SQL注入漏洞,导致大量用户信息被泄露。由于绝大多数当今网站都是通过数据库存储用户信息和网站数据,这导致SQL注入攻击成为网站最常见到的安全风险来源之一。
  1.SQL注入攻击原理
  SQL注入攻击是通过操作输入来修改SQL语句,用以达到执行代码对WEB服务器进行攻击的方法。简单的说就是在post/get web表单、输入域名或页面请求的查询字符串中插入SQL命令,最终使web服务器执行恶意命令的过程。可以通过一个例子简单说明SQL注入攻击。
  假设某网站页面显示时URL 为http://www.example.com?test=123,此时URL实际向服务器传递了值为123的变量test,这表明当前页面是对数据库进行动态查询的结果。由此,我们可以在URL中插入恶意的SQL语句并进行执行。另外,在网站开发过程中,开发人员使用动态字符串构造SQL语句,用来创建所需的应用,这种情况下SQL语句在程序的执行过程中被动态的构造使用,可以根据不同的条件产生不同的SQL语句,比如需要根据不同的要求来查询数据库中的字段。这样的开发过程其实为SQL注入攻击留下了很多的可乘之机。
  2.SQL注入攻击常见方法和过程
  2.1寻找SQL注入漏洞
  确定网站存在SQL注入漏洞的途径一般有两种,第一种是可以利用网站的错误提示,如果网站开启了错误显示,攻击者就可以通过在输入参数的地方反复调整发送的参数,通过页面出现的错误信息,推测出网站使用的数据库和开发语言信息。如果网站管理员关闭了错误信息提示,攻击者可以采用盲注的技巧来进行反复尝试。盲注是利用数据库查询的输入审查漏洞从数据库提取信息或提取與数据库查询相关的信息的技术。如在URL 中输入login.php?username=admin’ and 1=1和login.php?username=admin’ and 1=2,如果前者能正常返回信息,而后者不能,基本上就可以认定网站存在SQL注入漏洞。这是因为1=2的表达式不成立,所以即使username传入了正确的数值也是无法通过,因此可以判读出该网站可以通过usernamer参数进行注入。
  2.2判断数据库
  获得网站的数据库类型是SQL注入提取重要数据的前提条件之一,可以通过常见的技术架构进行判断,如aps.net常和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语句会包含一些特殊的字符或字符串,如单引号、双引号、反斜杠、NULL等。这样,可以通过使用数据库系统自带函数或编写相关验证程序对用户输入的这类符号进行转义或者过滤,从而达到限制SQL注入的目的。
  3.3合理使用预编译
  预编译是吧一些格式固定的SQL 编译后,存放在内存池中,当需要执行相同SQL语句时,就可以直接执行以及预编译的语句,不同的数据库系统都有预编译机制。因此,在当遇到类似login.php?username=admin’ and 1=1的注入攻击时,预编译SQL语句 WHERE username=?可以阻止攻击的成功。
  3.4对关键数据信息加密
  对于数据库中诸如账号密码的信息应该避免使用明文存储,可以使用AES、RSA、MD5等算法对数据进行加密存储,这样即使系统被SQL注入成功,攻击者也无法轻易获得关键数据信息的内容。
  4.结语
  SQL注入一直是网站重要的安全风险来源,作为网站的开发者和运维人员应该意识到SQL注入攻击是一种综合的攻击手段。为了避免SQL注入带来的影响,开发者和运维人员应该从网站设计入手,并对服务器、数据库管理等多方面加以规范,確保网站可以安全可靠的运行。
  参考文献:
  [1]郑成兴.网络入侵防范的理论与实践[m].机械工业出版社,2012
  [2]黄健.计算机信息安全技术及防护[J].信息安全与技术,2012,4.
  [3]阴国富.基于SQL注人的安全防范检测技术研究[J].河南科学,2009,27
  [4]李虎军.浅谈网站SQL注入攻击防护策略研究[J].电脑知识与技术,2016,3
  作者简介:
  郑智钊,男,1983年出生,工学学士,网络工程师,工作单位:哈尔滨铁道职业技术学院,主要研究方向:计算机科学与应用。
其他文献
雷德利·斯科特,1937年出生于英国杜伦,以一等荣誉毕业于伦敦皇家艺术学院,是一位电影导演和制片人.他在电影艺术界享有盛誉,其作品包括《异形》《银翼杀手》《角斗士》《黑
《纽约的一个雨天》是由伍迪·艾伦执导的爱情轻喜剧,影片围绕着盖茨比和阿什莉这两个年轻人之间的情感展开,讲述了一段关于爱情与成长的故事.影片中人物密集的表达心理状态
“海派”文化在近一个世纪的发展历程中,为相关文学、影视作品的创作提供了源头活水.其中“海派”电影立足于中西合璧的交流互鉴环境,追溯近代中国与外来文化的互渗关系,在商
摘 要:随着经济高速发展,我国电力行业装机容量越来越大,对汽轮机本体检修水平提出了更高的要求,本文威信电厂为例,对600MW机组汽轮机本体检修的具体要点进行了着重分析,旨在为相关技术人员提供有价值的参考建议。  关键词:汽轮机本体;A级检修  前言  云南能投威信能源有限公司1号机组汽轮机为东方汽轮机有限公司生产的超临界、一次中间再热、冲动式、单轴、双背压、三缸四排汽、凝汽式8级回热汽轮机结构,型