SQL注入检测和防范技术的比较外文文献翻译中文译文

上传人:a**** 文档编号:112518716 上传时间:2022-06-22 格式:DOC 页数:10 大小:96.50KB
返回 下载 相关 举报
SQL注入检测和防范技术的比较外文文献翻译中文译文_第1页
第1页 / 共10页
SQL注入检测和防范技术的比较外文文献翻译中文译文_第2页
第2页 / 共10页
SQL注入检测和防范技术的比较外文文献翻译中文译文_第3页
第3页 / 共10页
点击查看更多>>
资源描述
本 科 生 毕 业 论 文(设计)外 文 文 献 翻 译 译文一: SQL注入检测和防范技术的比拟 译文二: 学生姓名 朱菲菲 学 号 0704100122 指导教师 张帅 二级学院信息学院 专业名称 信息管理与信息系统 班 级07信息1班 2021年3月SQL注入检测和防范技术的比拟 Atefeh Tajpour, Maslin Massrum, Mohammad Zaman Heydari. Comparison of SQL Injection Detection and Prevention TechniquesJ.ICETC,2021,2:174179. 摘要:数据库驱动的Web应用程序正受到SQL注入攻击(SQLIAs)的威胁,因为这种类型的攻击可能危及数据库中的信息的机密性和完整性。事实上,当一个攻击者侵入到Web应用程序数据库时,他就能由此对数据进行访问。为阻止这种攻击,研究人员已经提出不同类型的方法。但是这些方法并不能完全起作用,因为大多数的实施方法不能阻止所有的攻击类型。本文将介绍所有SQL注入攻击(SQLIAs)的类型以及检测或防范这些攻击的不同技术。最后,我们将对所有这些阻止SQL注入攻击的方法进行评估。 关键字:SQL注入攻击;检测;防范 1 介绍 现在,许多日常活动是通过动态Web应用程序实现的。例如,许多人通过动态网站来支付账单,预定酒店或通过考试,而不是花时间上下班。显然,网上的私人信息必须得以保密,网络应用的开发者必须提供信息的保密性和完整性。但不幸的是,开发者并不能保证根底数据库不受当前的攻击。Web应用程序往往容易受到攻击,攻击者很容易入侵到应用程序的根底数据库。 结构化查询语言注入(SQLI)攻击,发生在攻击者通过插入一个新的SQL关键字或运算符来改变SQL查询的逻辑,语义或语法。 SQL注入攻击(SQLIA)属于一种代码注入攻击,发生在没有输入验证时。事实上,攻击者可以将自己的非法输入,塑造成为由数据库操作的最后查询字符串的一局部。财经网站应用程序或涉密信息系统将会是这个漏洞的受害者,因为此漏洞的攻击者可以通过滥用网站的这一漏洞,威胁这些网站的的权威性,完整性和保密性。因此,网站开发者编译一些防御性的代码,以消除这一漏洞,但这些代码往往不能解决这一问题。 SQL注入攻击(SQLIA)也可以逃脱如防火墙和入侵检测系统(IDSs)等传统防范工具,因为它们通过的端口,是用于常规网络流量的并且在防火墙中通常是开放的。另一方面,大多数入侵检测系统(IDSs)的工作重点位于网络和IP层,而SQL注入攻击(SQLIA)作用于应用层。研究人员已经提出了一系列的技术和工具,以帮助开发者来弥补防范编码7,8,11的缺点。 问题是,当前的一些技术和工具在现实中不切实际,因为它们无法防范所有攻击类型或是没有得到落实。同样它们中的一些需要修改Web应用程序代码或其他根底设施。然而,本文的主要目的,是介绍各种SQL注入攻击(SQLIA)并对目前的对它们的检测或预防方法进行评价。 本文的结构如下:在第2局部中,我们通过一个例子来定义SQL注入攻击(SQLIA)。在第3局部中,我们将介绍不同的SQL注入攻击(SQLIA)的类型。在第4局部中,我们将回忆目前阻止SQL注入攻击(SQLIA)的技术。在第5局部中,我们将评估SQL注入检测和阻止各种类型的SQL注入攻击(SQLIA)的防范方法。在第6局部中,我们将做出总结和未来的展望。 2 SQL注入攻击的定义 SQL注入是一种攻击类型,攻击者增加结构化查询语言代码到一个网页表单的输入框中,以获取或更改数据。SQL注入漏洞允许攻击者的命令直接到达网站应用程序的根底数据库并破坏其功能性和保密性。 3 SQL注入攻击的类型 网络攻击有着不同的方法,它们根据攻击者的目的来进行同时或持续的攻击。对于一次成功的SQL注入攻击(SQLIA),攻击者应当将一条语义正确的指令附加到原有的SQL查询中去。接下来提出的SQL注入攻击(SQLIA)按照Halfond,Viegas,和Orso研究报告2,4分类。 Tautologies:这种类型的攻击,其注入到条件查询语句的SQL符号被认为总是正确的。这种类型的攻击惯于绕过认证控制,并通过开发易受攻击的输入栏来访问数据,而这种输入栏采用的是WHERE子句。 SELECT * FROM employee WHERE userid 112 and password aaa OR 11 因为这条tautology语句已经加进了查询语句,所以它总是正确的。 非法/逻辑错误的查询:当一个查询被拒绝,一个错误信息从数据库中返回,其中包括有用的调试信息。此错误信息帮助攻击者找到应用程序中易受攻击的参数,并因此找到应用程序的数据库。事实上,攻击者有意在查询中参加无效的输入或SQL符号,以产生语法错误,类型不匹配,或逻辑错误。在这个例子中,攻击者通过在个人识别码(pin)输入栏中输入下面的字段来产生类型不匹配的错误: 1 原文网址: /0. nav8864 2 SQL 注入: /. nav8864 3错误信息显示: SELECT name FROM Employee WHERE id 8864 从错误信息,我们可以找出表名和字段:姓名;雇员;标识。通过已获得的信息,攻击者可以组织更有针对性的攻击。 Union查询:通过这种技术,攻击者通过Union字段,将注入的查询添加到平安的查询中,然后从应用程序中获取其他表中的数据。 假设此例中,从效劳器上执行的查询如下: SELECT Name, Phone FROM Users WHERE Id$id By injecting the following Id value: $id1 UNION ALL SELECT creditCardNumber, 1 FROM CreditCarTable 我们将有以下查询: SELECT Name, Phone FROM Users WHERE Id1 UNION ALL SELECT creditCardNumber, 1 FROM CreditCarTable 这条查询将参加到所有信用卡用户的原来查询结果中。 Piggy-backed查询:在这种类型的攻击中,入侵者利用查询分隔符,如“;,来入侵数据库并将额外的查询语句附加到原来的查询中。在一次成功的攻击中,数据库将接收并执行多个不同的查询。一般情况下,第一次查询是合法的查询,而接下来的查询可能是非法的。因此,攻击者可以注入任何SQL命令到数据库中。在下面的例子中,攻击者不是注入逻辑值,而是注入“0;drop table user到个人识别码(pin)输入栏中。然后应用程序会生成查询:SELECT info FROM users WHERE logindoe AND pin 0; drop table users 由于“,字符,数据库同时接受两条查询语句并执行它们。第二个查询是不合法的,并且可以从数据库中删除用户表。值得注意的是,一些数据库并不需要在多个不同查询中存在的特殊分隔符,所以对于这种类型的攻击检测时,对特殊字符的扫描不是有效的解决方案。 存储过程:存储过程是数据库的一局部,指程序员可以在数据库上设置一个额外的抽象层。由于存储过程可以由程序员编码,因此,这局部是作为Web应用程序的形式注入。根据数据库上特定的存储过程,存在着不同的方法对程序进行攻击。在下面的例子中,攻击者将入侵参数化的存储过程。CREATE PROCEDURE DBO.isAuthenticated userName varchar2, pass varchar2, pin int AS EXECSELECT accounts FROM users WHERE login +userName+ “ and pass +password+ , and pin +pin; GO 对于授权/未经授权的用户,存储过程返回真/假。作为一次SQL注入攻击(SQLIA),入侵者输入“ ; SHUTDOWN; - - “作为用户名或密码。然后,存储过程生成以下查询:SELECT accounts FROM users WHERE logindoe AND pass ; SHUTDOWN; AND pin 在此之后,这种类型的攻击方式转变为Piggy-backed攻击。第一条原始查询语句被执行,接着第二条非法的查询语句也被执行,最终导致导致数据库关闭。因此,存储过程被认为是和Web应用程序代码一样易受攻击。 推理:这种类型的攻击,入侵者更改数据库或应用程序的行为。有两种以推理为根底的著名攻击技术:盲目注入和定时攻击。 1盲目注入:有时,开发人员隐藏错误的详细信息,并导致攻击者破坏数据库。在这种情况下,攻击者面临的是由开发者提供的一个通用页面,而不是错误信息。因此,SQL注入攻击(SQLIA)会比拟困难,但不是不可能。攻击者仍然可以通过询问一系列True/False的SQL语句,窃取数据库中的数据。在登录栏中考虑两个可能的注入:SELECT accounts FROM users WHERE logindoe and 1 0 AND pass AND pinO SELECT accounts FROM users WHERE logindoe and 1 1 AND pass AND pinO 如果应用程序是平安的,那么这两个查询将因为输入验证而失败。但是,如果没有输入验证,攻击者将有可能成功。首先,攻击者提交第一条查询语句,并因为“1 0而收到错误信息。因此,错误信息到底是因为输入验证还是查询中的逻辑错误,攻击者将不得而知。然后,攻击者提交的第二个正确的查询。如果没有登录错误信息,那么攻击者将发现登录栏易受注入攻击。 2定时攻击:定时攻击,能使攻击者通过观察数据库的响应时间延迟,从数据库中收集信息。这种技术通过使用If - Then语句,导致SQL引擎执行一个长时间运行的查询语句或依据逻辑注入的延时语句。这种攻击类似于盲目注入,因此攻击者可以确定页面加载的时间,以确定注入语句是否正确。这种技术使用一种if - then的注射查询语句。 WAITFOR是该分支的一个关键字,这将导致数据库以一定的时间推迟其响应。 例如,下面的查询:declares varchar8000 selects db_nameO if asciisubstrings, I, I & power2, 0 Owaitfor delay 0:0:5 如果在当前数据库的名称的第一个字节的第一位为1,数据库将暂停五秒钟。然后,当条件为真时,代码将被注入以生成一个响应时间的延迟。此外,攻击者可以对这项性质提出其他一系列的问题。这些例子说明,易受攻击的参数使得数据库中的信息被提取出来。 交替编码:在这种技术中,攻击者通过使用交替编码修改注入查询语句,如十六进制,ASCII码和万国码。因为这样他们就可以逃过开发人员的过滤器,这种过滤器会从输入查询语句中扫描出特殊的“坏字符。例如攻击者如果使用char(44),而不是单引号,那么这就是一个“坏字符。这种技术与其他攻击技术结合在一起将会使其功能变得十分强大,因为它可以针对应用程序中的不同层,因此使开发人员必须熟悉所有的层,以提供有效的防御性的编码,来防止交替编码攻击。通过这种技术,不同的攻击都可以成功地隐藏在交替编码中。 在下面的例子中,个人识别码(pin)输入栏将被注入以下字符串:0; exec Ox73587574645f776e, ,得到的查询结果是:SELECT accounts FROM users WHERE login AND pinO; exec charOx73687574646j776e 这个例子使用char函数和ASCII十六进制编码。char函数以十六进制编码的char字符(s),并返回实际的字符(s)。在注入语句第二局部中的数据流,是以ASCII十六进制编码的攻击字符串。当被执行时,这种编码的字符串将被数据库转换为关机命令。 4 SQL注入检测和防范技术 虽然开发者放置了防御性的编码或加强操作系统(OS),但他们都缺乏以阻止SQL注入攻击到Web应用程序,因此研究人员提出了一些技术来协助开发者。 Huang和其同事18提出了WAVES,一种用于测试SQL注入Web应用程序的漏洞的黑盒技术。该工具找出了Web应用程序的可以用来注入SQL注入攻击(SQLIAs)的所有方面。它建立了针对这些方面的攻击,并利用机器学习来监控应用程序如何应对攻击。 IDBC检查器12,13并不能检测和防范常规的SQL注入攻击(SQLIAs),但可以用于防止由于动态生成的查询字符串不匹配而产生的攻击。由于大局部的SQL注入攻击由语法和类型正确的查询组成,所以该技术不能发现这些攻击的普遍形式。 Wassermann和Su建议Taoutology Cheker23,它使用静态分析来阻止同义反复的攻击。这种技术的主要限制是,其范围仅限于同义反复,而不能检测或预防其他类型的攻击。 Xiang Fu和Kai Qian28提出了一种名为SAFELI德静态分析框架设计,它用来检测编译时的SQL注入攻击(SQLIAs)漏洞。 SAFELI使用符号执行,来静态监测ASP.NET Web应用程序的MSIL(微软中间语言符号)字节码。 SAFELI可以分析源代码,并且能够识别不能由暗箱漏洞扫描器发现的微妙漏洞。这项技术的主要缺点是,这种方法只能在以微软为根底产品上才能发现SQL注入攻击。 CANDID2, 7通过程序转换来修改Java编写的Web应用程序。此工具能动态开发程序员想要的任何输入查询结构,并通过与实际查询语句结构的比照来检测攻击。CANDID自然和简单的方法被证明能有效地对SQL注入攻击进行检测。 在SQL Guard10 和SQL Check5中,查询语句在运行时受到检查,这种运行基于一种只接受合法语句的模型。SQL Guard将在基于该模型的用户输入中输入附加内容的之前和之后,检查该查询语句的结构。在SQL检查中,该模型由开发商独立指定。这两种方法,都利用运行时间检查器,在进行语义分析时使用一个密钥来划定用户输入,所以这种方法的平安性基于该密钥不被攻击者发现。在这两种方法中,开发者需要使用一种特殊的媒介库,或是通过手动将特殊的标记添加到一个动态生成的查询代码中来修改代码。 5 总结和展望 在本文中,我们首先定义了SQL注入攻击(SQLIAs)的各种类型。然后,我们调查了SQL注入检测和防范技术。之后,我们比拟了这些技术在防止SQL注入攻击(SQLIAs)方面的能力。结果说明,目前的一些技术在防止SQL注入攻击方面的能力应该得到提高。 在今后的工作中,我们将单独地把这些已投入使用的技术在有效性、效率、稳定性、灵活性和作为工具的性能方面进行比拟,以显示其优势和弱点。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!