文档详情

SQL注入攻击与防护措施研究.doc

发布:2018-03-12约7.91千字共13页下载文档
文本预览下载声明
SQL注入攻击与防护措施研究   摘要:SQL注入是Web应用中常见的一种针对数据库层的攻击方法。该文分析了SQL注入的原理和攻击方法,总结了实践中常用的针对SQL注入的防范措施。此防护措施经适当修改即可用于多种平台类型的Web应用中。   关键词:SQL注入;攻击;防护措施   中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)04-0777-04   The Research of SQL Injection Attack and Prevention Method   SHI Ying1, KONG Qiao2   (1.Navy Institute of Compute Technology, Beijing 100841, China; 2 Navy Testing Center of Weapon Equipment, Beijing 100161, China)   Abstract: SQL injection is a common attack method which is aimed at database in web application. In this paper, the principle and the attack method of the SQL injection are analyzed, and then the effective measures of prevention are summarized. These measures can also be used in many other web environments by modified.   Key words: SQL injection; attack; prevention measures      1 引言   SQL注入(SQL Injection)漏洞是存在于应用程序数据库层的安全漏洞,攻击者可以利用这个漏洞在输入的资料字串中夹带SQL指令,一旦应用程序忽略了检查,这些夹带进去的指令就会被数据库服务器误认为正常的SQL指令而执行,从而导致数据库结构以及系统资料外泄,最终使系统遭到破坏。   由于SQL注入是从WWW端口访问,而且表面看来跟一般的Web页面访问没有区别,所以多数防火墙不会对SQL注入发出警报。通过这种攻击,攻击者很容易获得数据库中的账户资料、密码信息等,从而进一步篡改系统管理员账户,在网页中加入恶意链接以及XSS。经由数据库服务器提供的操作系统支持,攻击者还能够修改或控制操作系统,破坏硬盘数据,乃至瘫痪全系统。因此,开发人员有必要对SQL注入有全面的了解,从而提高自身的安全意识和软件的健壮性。本文分析了SQL注入的原理和攻击方法,总结了一些有效的防护措施。所有代码均在JSP+Tomcat/6.0.16+MySQL环境下运行通过。   2 SQL注入的作用原理   很多Web站点都会利用用户输入的参数动态生成SQL查询请求。如果攻击者在URL、表格域或其他的输入域中输入自己的SQL命令,而Web程序在组合SQL命令字串时未进行严格的数据过滤,就有可能被插入恶意的SQL代码。例如,某网站验证登录者用户名和密码的SQL查询代码为:   strSQL = SELECT * FROM user WHERE (name = + username + ) and ( pw = + password + ) ;   若攻击者恶意填入   username = OR 1 = 1 ;   passWord = OR 1 = 1 ;   此时原本的SQL查询代码被填为   strSQL = SELECT * FROM user WHERE ( name = OR 1 = 1 ) and ( pw = OR 1 = 1 ) ;   实际上运行的SQL命令变为   strSQL = SELECT * FROM user ;   由此攻击者达到无用户名、密码亦可登录网站的目的。   3 SQL注入攻击的方法   3.1 确定SQL注入攻击的注入点   动态网页在利用传入的参数与数据库进行存取交互时,如果没有对传入的参数进行必要的安全处理,就可能存在SQL注入漏洞。在此,本文模拟了一个功能为显示文章信息的网页,通过传递ID号在网页上显示某一具体文章的索引号、名称和作者,本网页设计时未进行任何安全处理措施。在浏览器地址栏输入:8080/article.jsp?id=1,页面正常显示:   1|article1|author1   当地址输入改为:8080/articl
显示全部
相似文档