ASP.NET网站中SQL注入攻击及防范

  • 格式:pdf
  • 大小:101.17 KB
  • 文档页数:1

信息技术 SCIENCE&TECHN0L0GY . 
圆 
ASP.NET网站中SQL注入攻击及防范 
李婷 
(镇江高等职业技术学校 江苏镇江 21 201 6) 

摘要:简要介绍了SQL注入攻击的原理,主要针对目前ASP.NET网站安全面临的SQL注入攻击来进行分析,并从客户端和服务器端等几个 
方面来研究如何防范SQL注入攻击。 
关键词:ASP.NET 网站防范 SQL注入攻击 
中图分类号:TP2 文献标识码:A 文章编号:1 672-3791(20lo)1 2(a)-0023--01 

SQL注入(SQL Injection)是一个WEB开 发中安全性最易受到破坏的攻击方式,是 从正常的www端口访问网站,提交一段 特殊的数据库查询代码,根据程序返回的 结果,获取想得知的服务器数据。由于SQL 注入能通过网页随意修改网站数据库中 的内容,插入恶意代码,任意获得网站上 的文件以及在网页上加挂木马,所有开发 人员都需要理解和保护本层数据免受注 入式攻击。 1 SQL注入攻击 1.1 SQL注入攻击原理 SQL注入式攻击就是利用程序员对用 户输入数据的合法性检测不严或不检测的 特点,从客户端提交特殊的代码,从而收集 程序及服务器的信息,获取想得到的资料, 进而获取网站管理员的帐号和密码。由于 SQL注入表面看起来跟一般的Web页面访 问没什么区别,所以目前市面的防火墙都 不会对SQL注入发出警报,如果管理员没有 查看IIS日志,可能被入侵很长时间都不会 发觉。这些SQL语句不仅可以检索私有信 息,还可以修改或破坏数据库服务器上的 信息。对于服务器来说,只要注入的SQL语 句在语法上正确的,就无法通过编程方式 在服务器端检测到篡改的情况,因为SQL语 法允许数据库命令和用户数据混杂在一 起,如果没有考虑到恶意用户,用户数据可 能被解释成命令,远程用户甚至可以在数 据库上执行任意命令。这种攻击具有广泛 性,如果应用程序使用特权较高的账户连 接到数据库,攻击者有可能使用应用程序 对数据库中所有数据完成操作。 '.2 SOL注入攻击种类 根据网站服务器与客户端数据交互情 况的不同,常见的SQL注入式攻击种类有以 下几种方式。 (1)没有正确过滤转义字符。 在用户的输入没有为转义字符过滤 时,就会发生这种形式的注入式攻击,它会 被传递给一个SQL语句。这样就会导致应用 程序的终端用户对数据库上的语句实施操 纵。例如下面的这行代码就会演示这种漏 洞:statement:一 SELECT+FR0M users WHERE name=’”+userName+”’;”它 的设计目的是将一个特定的用户从其用户 表中取出,但是,如果用户名被一个恶意的 用户用一种特定的方式伪造,语句所执行 的操作可能就不仅仅是代码的作者所期望 的那样了。 
(2)Incorrect type handling。 如果一个用户提供的字段并非一个强 类型,或者没有实施类型强制,就会发生这 种形式的攻击。当在一个SQL语句中使用一 个数字字段时,如果程序员没有检查用户 输入的合法性(是否为数字型)就会发生这 种攻击。例如:statement:=”SELECT+ FR0M data WHERE id=。’+a variable+ ”l”这里,a—variable希望是一个与“id”字段 有关的数字。 (3)数据库服务器中的漏洞。 有时,数据库服务器软件中也存在着 漏洞,如MYSQL服务器中mysql—real escap e string()函数漏洞。这种漏洞允许一个攻 击者根据错误的统一字符编码执行一次成 功的SQL注入式攻击。 2 SOL注入防范措施 要防范SQL注入攻击,需要对用户输入 的数据进行检查。检查可以在客户端进行, 但攻击者完全有可能获得网页的源代码, 修改验证合法性的脚本(或者直接删除脚 本),然后将非法内容通过修改后的表单提 交给服务器。因此,在服务器端也要执行验 证,但使用客户端验证可以减少页面往返 次数以提升性能,改进用户体验。 2.1客户端防范SQk注入攻击 (1)约束输入,ASP.NET页面中@pages 指令的validateRequest元素的属性值设为T rue时,可以检查从浏览器输入的所有内容 中是否存在潜在的危险数据。如果是则通 过将所有输入数据与一个潜在危险的值列 表进行比较来执行请求验证。如果发生匹 配,ASP.NET将引发HttpRequestValidation Exception异常。 (2)采用内建的验证对象,对于表单中 输入控件可以采用Validation控件进行验证 例,当然也可以采用传统的Javascript来编 写代码控制。但客户端的防护可以被轻易 绕过,攻击者完全有可能获得网页的源代 码,修改验证合法性的脚本,然后将非法内 容通过修改后的表单提交给服务器,因此, 要保证验证操作确实已经执行,可靠的方 法是在服务器段也执行验证。 2.2服务器端防范SQL注入攻击 (1)由于通过客户端进行验证并不能完 全保证安全性,因此,为保证安全性,最有 效的办法是在服务器端进行验证。编程实 现服务器端数据验证,对于从上一页传递 过来的所有数据以及用户直接输入的数据 进行校验。如果传递的是数字型数据,对其 
完成类型强制转换。而如果传递的是字符 
型数据则需要使用replace对单引号替换成 
两个单引号地方进行控制。 
(2)如果文本确实需要包含一些特殊符 
号,那么更好的解决办法是使用参数化命 
令来防止SQL注入攻击。参数化命令是在 
SQL文本中使用占位符的命令。占位符表示 
需要动态替换的值,它们通过Command对 
象的Parameters集合来传送。 
2.3其他措施防范SOL注入攻击 
(1)通过特定文件完成与数据库连接的, 
最好加密此文件,以防止恶意用户修改连接 
文件做到绕过认证的目的。同样加密文件也 
是一种有效的被动保护方式,即使攻击者盗 
取文件,也无法正常获得真实内容。 
(2)给一个错误信息提示页面,因为很 
多的SQL注入攻击都是根据IIS提供的出错 
信息来判断攻击的,所以设置IIS服务器应 
该自行设置返回语句显示的内容,及所有 
的错误都只返回一种由程序员定义好的信 
息,让攻击者无法从中得到有价值的内容。 
(3)开发人员应该根据应用程序的不同 
需求和功能合理的进行权限配置,对数据库 
应该精确地设置每一个表的各项操作权限。 

3结语 
SQL注入漏洞在网上极为普遍,是所有 
web开发人员都需要理解和防止的东西。 
本文所述SQL注入攻击防范方法通过在实 
际项目中的使用,能够很好进行主动防范, 
具有一定的普遍适用性。希望对开发人员 
有所借鉴。 

参考文献 
[1】程科峰.警惕SQL注入的危险【J】.计算机 
安全,2004(1). 
[2]张勇,李力,薛倩.Web环境下SQL注入 
攻击的检测与防御【J】.现代电子技术, 
2004(15). 
[3】蒋继娅,刘彤,王树威.Web应用中的 
SQL注入攻击与防护方案研究【J1.计算 
机安全,2008(5). 
【4】徐嘉铭.SQL注入攻击原理及在数据库 
安全中的应用【J】.电脑编程技巧与维 
护,2009(18). 

科技资讯SCIENCE&TECHNOLOGY INFORMATION