期刊鉴别 论文检测 免费论文 特惠期刊 学术答疑 发表流程

档案管理网站的SQL注入攻击与防范

时间:2016-08-17 09:02 文章来源:http://www.lunwenbuluo.com 作者:李建荣 何保荣 秦奕 点击次数:

  摘要:本文通过实例分析了SQL注入攻击原理,根据本人平时的工作总结,系统地阐述了如何防范SQL注入攻击、SQL注入攻击检测方法和SQL注入攻击后的补救措施。希望对档案管理网站开发人员和档案管理网站管理人员有一定的启发,提高档案管理网站的安全性。

  关键词:SQL;SQL注入;SQL注入攻击;数据库;档案管理网站

  随着计算机和网络技术的日益发展,网络化、数字化成为档案管理发展的重要方向,档案管理网站建设成为其中很重要的组成部分。在网站建设过程中,由于网站开发人员的能力和管理经验参差不齐,部分网站开发人员在编写代码的时候,没有对用户输入数据的合法性进行严格判断和过滤,使网站存在不同的安全隐患,容易遭受不同程度的SQL注入攻击[1]。目前档案管理网络安全系统主要以防火墙为主,而防火墙只是对访问对象进行认证,而对于网站本身存在的软件问题,入侵者依然可以在遵守防火墙访问规则的前提下实施攻击,防火墙并不能有效解决SQL注入攻击问题。所以研究档案管理网站的SQL注入攻击与防范措施是摆在档案管理网站开发人员和网站管理人员面前的一个急需探讨的重要课题。

  1SQL注入攻击概述

  1.1SQL注入攻击概念。SQL(StructuredQueryLanguage)是一种用来和数据库交互的文本语言,我们也把它叫做结构化查询语言,使用它可以对数据库进行管理。

  SQL注入,就是在客户端通过把SQL命令插入到Web表单递交或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,即通过递交参数构造巧妙的SQL语句,从而成功获取想要的数据[2]。一旦SQL注入成功,就形成了SQL注入攻击,轻则导致重要数据的泄露或篡改,重则导致整个服务器受他人控制,一旦服务器被挂木马或者病毒,就会造成整个服务器瘫痪。

  由于档案管理网站要对大量数据进行管理,因此离不开数据库,而目前常用的数据库有Oracle、Sybase、DB2、MSSQLServer等,这些数据库均是基于SQL语句的标准数据库,所以SQL注入攻击具有广泛性、技术难度不高、危害性大等特点。

  1.2SQL注入攻击的原理。SQL注入攻击原理就是利用某些数据库的外部接口把用户精心编写的、具有特定含义的数据合理地插入到实际的数据库操作语言当中,从而达到入侵数据库的目的[3]。产生SQL注入攻击的主要原因是程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入。

  登录在网站设计中是很重要的一个部分,下面以登录验证中的模块为例,来说明SQL注入攻击的具体实现方法。在Web应用程序的登录验证程序中,一般有用户名(username)和密码(password)两个参数,程序会通过用户所提交输入的用户名和密码来执行相关的授权操作。其原理是通过查找user表中的用户名(username)和密码(password)的结果来进行授权访问,典型的SQL查询语句为:

  Select*fromuserswhereusername=‘admin’andpassword=‘smith’

  如果分别给username和password赋值“‘admin’or1=1--”和“123”,那么,SQL脚本解释器中的上述语句就会变为:

  select*fromuserswhereusername=‘admin’or1=1--andpassword=‘123’

  该语句中“--”表示注释语句,即“--”后面所有的内容为注释内容,系统不再执行。Where条件部分由逻辑或运算连接的两个判断条件,只要一个条件成立,整个SQL语句就会成功执行,而1=1在逻辑判断上是恒成立的,所以在该SQL语句中,不管用户名和密码对不对,该语句都可以正常执行。至此,入侵者恶意构造的SQL语句就得到了正确执行,实现一次SQL注入攻击。

  同样道理,如果程序没有实施类型强制,通过在输入数据时构造SQL语句,还可以删除数据库中的数据表,造成大量数据丢失。例如:

  UpdatesubjectSetscore=?Wherename=‘xiaoming’

  如果成绩的值被恶意输入为:99;DropTableusers#

  这时该SQL语句就会变成下面的语句:

  UpdatesubjectSetscore=100;DropTableusers#wherename=‘xiaoming’

  系统一旦执行该语句,其中的SQL语句DropTableusers,就会将“users”表从数据库中删除。

  2如何防范SQL注入攻击

  SQL注入攻击防范方法目前已经有很多,总结起来有以下几个方面:

  2.1加强对用户输入的验证。当服务器接受用户端提交的数据时,要先对用户端数据的合法性进行严格检查,使恶意数据不能直接被嵌入到SQL语句中。

  使用恰当的验证对用户端输入的数据进行检查,最大限度地保证符合定义的标准过程,是否满足预设定的类型、长度或大小、数值范围和格式等。在SQLServer数据库中,有比较多的用户输入内容验证工具,可以帮助管理员来对付SQL注入式攻击。

  利用存储过程可以实现对用户输入变量的过滤,拒绝接受一些特殊的符号,如上面例子恶意删除数据表那段代码中,只要存储过程把那个分号过滤掉,这个恶意SQL代码就没法执行了。所以可以直接把这些类似的特殊符号过滤掉,即使在SQL语句中嵌入了恶意代码,也不容易形成SQL注入攻击。


  •   论文部落提供核心期刊、国家级期刊、省级期刊、SCI期刊和EI期刊等咨询服务。
  •   论文部落拥有一支经验丰富、高端专业的编辑团队,可帮助您指导各领域学术文章,您只需提出详细的论文写作要求和相关资料。
  •  
  •   论文投稿客服QQ: 论文投稿2863358778 论文投稿2316118108
  •  
  •   论文投稿电话:15380085870
  •  
  •   论文投稿邮箱:lunwenbuluo@126.com

联系方式

  • 论文投稿客服QQ: 论文投稿2863358778
  • 论文投稿客服QQ: 论文投稿2316118108
  • 论文投稿电话:15380085870
  • 论文投稿邮箱:lunwenbuluo@126.com

热门排行

 
QQ在线咨询
咨询热线:
15380085870
微信号咨询:
lunwenbuluoli