预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Web应用中SQL注入攻击与防范探析HYPERLINK"https://m.zqwdw.com/wenku/zhengfajunshi/2020/0912/699930.html"摘要:SQL注入攻击已成为当前Web应用程序的主要安全漏洞之一,其危害巨大,受到国内外研究人员的高度重视和广泛关注。介绍了SQL注入攻击的原理和分类,并结合Web应用程序开发给出了若干防范措施。关键词:SQL注入攻击;防范;Web应用中图分类号:TP393.08文献标识码:A文章编号:1672-7800(2012)001-0137-020引言随着互联网技术的发展,Web应用程序的开发越来越多,针对Web应用的攻击也在迅猛增长。通常情况下,Web系统服务器和数据库管理系统软件通过合理的策略配置与密码机制,攻击者往往不能够直接实施攻击,Web应用与数据库的访问接口就成为攻击者实施攻击的一条捷径。SQL注入攻击就是现在存在于Web应用中最常见的一种攻击方式,在Internet或企业内网中,对Web应用进行的SQL注入攻击大量存在。加之一部分程序员因缺乏设计经验和安全意识,开发出的软件产品存在安全隐患,这种攻击手段很容易被攻击者利用。但是只要对Web应用采取合理的防范措施就可以阻止SQL注入的发生或减少攻击造成的损失。1SQL注入攻击原理Web应用程序易受SQL注入攻击主要是由于Web应用程序开发人员对用户输入的验证不充分造成的。常见的SQL注入攻击有以下几种方式:(1)通过登录表单进行注入。攻击者利用客户端用户向服务器端提交数据请求时输入非法数据,通过后台服务器执行被修改过的SQL语句,得到与程序原有预期不同的结果,甚至可以执行删除数据库等管理操作。(2)攻击者通过修改Cookie内容来实施SQL注入攻击。Cookie是Web应用程序产生的、存储在客户端机器上的包含状态信息的文件。当客户端想重新获取某个Web应用程序时,可以利用Cookie来恢复其之前的状态信息。攻击者可以在客户端修改其内容,将攻击嵌入到Cookie中进行提交,当Web应用程序访问Cookie的内容构造SQL查询语句时,就会引发SQL注入攻击。(3)盲目SQL注入攻击。攻击者通过提交输入数据来检测应用是否存在SQL注入漏洞,当提交一个错误的SQL查询语句时,服务器将返回一个错误消息给客户端,攻击者从这些错误消息中获取有用信息后反复地进行探测,获取数据库中的敏感数据。2SQL注入攻击的防范措施通常,SQL注入攻击的过程为:攻击者在Web应用程序客户端输入界面中输入精心构造的非法数据,提交给服务器端构建SQL查询语句,然后服务器执行该SQL查询语句并将执行的结果返回给客户端。客户端、服务器端和数据库都有可能被SQL注入攻击。由于程序开发人员无法控制客户端用户的输入内容,所以我们只能在服务器端和数据库上加强防范SQL注入攻击。2.1用户输入数据转义在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。例如,在Web应用程序的登录页面中,允许用户输入其用户名(username)和密码(password)两个参数,应用程序通过users表中进行登录身份验证。假设登录用户名为:“zhangsan”,密码为:“2011015”。则身份验证语句为:select*fromuserswhereusername="zhangsan"andpassword="2011015",正常情况下,如果上述SQL查询返回一条记录,则说明是合法用户;反之,则是非法用户。如果分别为username和password两个参数赋以下的值:“’a’or0=0--”和“’a’”,则上述SQL语句就会变为:select*fromuserswhereusername=’a’or0=0--andpassword=’a’,显然在该语句的两个判断条件中,其中有一个总是为真,即0=0,因此身份验证就会成功。可见攻击者在不知道有效的用户名和密码的情况下就可以通过身份验证。为了防范SQL注入攻击,需要对用户输入的数据进行检查。转义机制根据应用开发采用的语言与后台数据库的不同,所使用的具体方法可能不同,但是其基本原理都是相同的。这种技术工作方式如下:能够将你提供给查询语句的特殊字符转义,告诉DBMS用户提供的输入是数据而不是代码。如果对用户提供输入数据使用合适的转义机制,DBMS将不会混淆输入,从而避免可能的SQL注入漏洞。例如:PHP提供了输入转义机制magic_quotes_gpc,保护应用程序免受潜在的SQL注入攻击。如果启用magic_quotes_gpc=on功能,就会在用户提交的`(单引号)、“(双引号)、\(反