System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于程序转换的SQL注入漏洞防御方法与系统技术方案_技高网

一种基于程序转换的SQL注入漏洞防御方法与系统技术方案

技术编号:40987704 阅读:2 留言:0更新日期:2024-04-18 21:31
本发明专利技术提出一种基于程序转换的SQL注入漏洞防御方法与系统,属于漏洞检测技术领域。本发明专利技术面对广泛应用了面向对象编程风格的应用程序,采用程序转换的技术,自动将应用程序中的关键代码从面向对象的编程风格转换为面向过程的代码风格,使当前的SQL注入漏洞检测技术具备在这类应用程序中检测SQL注入漏洞的能力。本发明专利技术解决了当前SQL注入漏洞检测方案不支持面向对象建模的问题。

【技术实现步骤摘要】

本专利技术属于漏洞检测,尤其涉及一种基于程序转换的sql注入漏洞防御方法与系统。


技术介绍

1、web应用程序在社会生活中扮演着极其重要的角色,被广泛应用于数字政务、社交平台、购物网站、在线教育、网上银行、远程办公等领域。存在于web应用程序的漏洞可以被攻击者利用开展数据窃取、拒绝服务、获取权限等攻击,对社会稳定和个人信息安全带来了严重威胁。sql注入漏洞是数量最多、影响范围最广的web应用漏洞之一。

2、sql注入是一种将sql代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台的sql服务器加以解析并执行。具体流程为:攻击者通过在web表单的用户输入框中填写包含sql关键字的数据来使数据库执行非常规代码,从而可以非法且不受限制地访问存储在后端数据库中的数据。攻击者将恶意的sql代码插入到sql查询语句中,之后再将这些特殊的sql查询语句传递给后台的数据库服务器加以解析并执行,最终返回攻击者想要得到的信息。

3、一次成功的sql注入攻击,必须要满足三个条件:一是找到sql注入点,并能够注入恶意查询语句;二是程序对用户的输入并没有严格的检查和过滤;三是恶意的查询语句会被数据库正常执行,并返回攻击者想要的数据库信息。

4、从现有技术来看,与本申请最接近的现有防御sql注入漏洞的方案有三类,一类是基于静态分析的sql注入漏洞检测方案,一类是基于参数化查询和过滤验证的安全开发策略,一类是基于黑盒渗透测试的sql注入漏洞检测方案。下面将一一阐述现有的三类方案。

5、第一类方案是基于静态分析的sql注入漏洞检测方案,此类方案一般利用自动化代码审计工具,利用静态分析技术对网站源码进行审查,根据sql注入漏洞的代码特征,发现其中所有可能存在的sql注入漏洞,并报告给审计人员,审计人员根据报告对可疑漏洞进行验证。已有的方案实例有:seay源代码审计系统,rips源代码审计系统等等。

6、第二类方案是基于过滤验证和参数化查询的安全开发策略。参数化查询就是将用户提供的输入数据与sql查询语句分开,从而防止恶意输入被误解为sql代码的一部分。使用占位符来代替实际的输入值,数据库会将输入值作为数据而不是代码进行处理。过滤验证技术就是在接收用户输入时,进行严格的验证和过滤。验证用户输入的数据类型、长度和格式,并拒绝包含潜在恶意代码的输入。对输入内容进行过滤就是利用数据加密或者删除有害操作使输入对应用程序的信息安全无害化。可以使用白名单过滤或正则表达式等技术来限制输入的内容。这类方案需要开发者在开发过程中将相关技术应用到应用程序中。

7、第三类方案是基于黑盒渗透测试的sql注入漏洞检测方案,通过模拟攻击者的行为,自动化地检测和验证目标应用程序中的sql注入漏洞。它们利用各种注入技巧和异常响应分析,帮助发现和确认系统中存在的漏洞,从而提供给开发人员修复和加固的建议。然而,这类方案的准确性和全面性可能受到限制。

8、如图1所示,第一类方案根据sql注入漏洞特征对源码进行扫描,返回可能存在的漏洞点,形成一个漏洞报告,最后用户根据漏洞报告进行漏洞验证。

9、如图2所示,第二类方案首先会对用户输入进行检查,第一步是对输入进行验证,验证输入是否符合类型、格式和长度的要求。不符合要求的输入会被认为是无效的,并显示错误信息。第二步是对符合要求的输入进行输入过滤,通过数据加密和删除有害操作使输入符合安全标准。然后连接数据库,根据输入和查询需求构建一个带有参数的sql查询语句。设置参数值是将用户输入的值与查询语句中的参数进行绑定。执行查询是指将参数化查询语句发送到数据库执行,并获取查询结果。

10、如图3所示,第三类方案首先利用工具对目标应用程序进行扫描,识别出可能存在sql注入漏洞的输入点;一旦识别出潜在的注入点,工具会尝试构造各种恶意的sql注入字符串,并将其作为输入发送给目标应用程序;工具会分析应用程序对注入请求的响应,以确定是否存在sql注入漏洞;当工具发现可疑的注入点和响应时,它会尝试进一步验证是否存在真正的sql注入漏洞;最后,工具会生成详细的报告,其中包括发现的注入点、漏洞的严重程度、验证结果和建议的修复措施。

11、可见,第一类方案目前应用较为广泛。但是该方案目前普遍存在的一个问题就是没有对面向对象的编程风格进行全面建模。面向对象是目前应用程序开发中普遍使用的一种编程风格。其模块化的设计使得代码更易于理解、维护和重用。具有灵活性高,可扩展性强的特点。由于面向对象编程风格的这些特点,通过对其全面建模来挖掘漏洞是十分困难的。因此第一类方案在面对广泛使用面向对象编程的应用程序时,无法有效挖掘出sql注入漏洞。

12、第二类方案尽管是防御sql注入漏洞的有效措施,但是也存在一些劣势和限制。首先,实施有效的输入验证和过滤需要考虑多种输入情况和数据类型,这可能导致复杂的验证逻辑和规则。随着应用程序的变化和演进,这些验证和过滤规则需要进行维护和更新,增加了开发和维护的成本。其次,输入验证和过滤通常是基于已知的攻击模式和漏洞进行设计的。然而,攻击者不断发展新的注入技术和绕过机制,可能会出现新型的漏洞和攻击,使得传统的输入验证和过滤措施变得无效。参数化查询能会增加代码的复杂性,特别是对于复杂的查询和多个参数的情况。需要创建和维护参数化查询语句,包括定义参数、绑定参数值等操作,这会增加代码的长度和复杂度。其次,不同的数据库系统和编程语言可能对参数化查询的支持和语法有所不同。这可能导致在不同的环境中需要使用不同的查询技术,增加了开发和维护的复杂性。

13、第三类方案由于无法得知应用程序的内部结构,因此同样具有很大的限制性。一是由于无法查看源代码、数据库结构和配置等敏感信息,从而限制了他们对系统的全面分析和评估;二是该方案通常是基于测试人员的经验和技能来选择和执行测试用例的,可能无法覆盖所有可能的漏洞点,尤其是对于复杂的应用程序和数据库结构;三是该方案通过输入大量的测试用例来检测漏洞,需要耗费大量的时间和资源,尤其是对于复杂的应用程序和大型的数据库,效率低下。


技术实现思路

1、为解决上述技术问题,本专利技术提出一种基于程序转换的sql注入漏洞防御方案。

2、本专利技术第一方面提出一种基于程序转换的sql注入漏洞防御方法。所述方法包括:

3、步骤s1、将应用程序的源代码转化为以抽象语法树表征的源码,并对所述源码进行基于匹配识别的扫描,以扫描出其中的关键语句;

4、其中,所述关键语句指存在潜在sql注入漏洞的敏感函数,且所述存在潜在sql注入漏洞的敏感函数为使用面向对象的编程风格来编写的函数;

5、步骤s2、通过数据流分析技术获取所述存在潜在sql注入漏洞的敏感函数的调用者,以确定敏感函数调用关系,提取出覆盖所述调用者、所述敏感函数和所述敏感函数调用关系的代码作为关键代码;

6、步骤s3、利用先验规则库对所述关键代码进行转换,将其编程风格从面相对象的编程风本文档来自技高网...

【技术保护点】

1.一种基于程序转换的SQL注入漏洞防御方法,其特征在于,所述方法包括:

2.根据权利要求1所述的一种基于程序转换的SQL注入漏洞防御方法,其特征在于,在所述步骤S1中,对所述源码进行基于匹配识别的扫描时,利用预先建立的漏洞数据库来执行所述基于匹配识别的扫描,所述漏洞数据库中存储有标准SQL注入漏洞代码段,将所述标准SQL注入漏洞代码段与所述以抽象语法树表征的源码进行匹配识别,从而得到所述关键语句。

3.根据权利要求2所述的一种基于程序转换的SQL注入漏洞防御方法,其特征在于,在所述步骤S3中,所述先验规则库中存储有预先设置的转换规则,所述转换规则用于将所述关键代码的编程风格从面相对象的编程风格转换为面相过程的编程风格。

4.一种基于程序转换的SQL注入漏洞防御系统,其特征在于,所述系统包括:

5.根据权利要求4所述的一种基于程序转换的SQL注入漏洞防御系统,其特征在于,第一处理单元具体被配置为:对所述源码进行基于匹配识别的扫描时,利用预先建立的漏洞数据库来执行所述基于匹配识别的扫描,所述漏洞数据库中存储有标准SQL注入漏洞代码段,将所述标准SQL注入漏洞代码段与所述以抽象语法树表征的源码进行匹配识别,从而得到所述关键语句。

6.根据权利要求5所述的一种基于程序转换的SQL注入漏洞防御系统,其特征在于,所述先验规则库中存储有预先设置的转换规则,所述转换规则用于将所述关键代码的编程风格从面相对象的编程风格转换为面相过程的编程风格。

7.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现权利要求1-3任一项所述的一种基于程序转换的SQL注入漏洞防御方法。

8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1-3任一项所述的一种基于程序转换的SQL注入漏洞防御方法。

...

【技术特征摘要】

1.一种基于程序转换的sql注入漏洞防御方法,其特征在于,所述方法包括:

2.根据权利要求1所述的一种基于程序转换的sql注入漏洞防御方法,其特征在于,在所述步骤s1中,对所述源码进行基于匹配识别的扫描时,利用预先建立的漏洞数据库来执行所述基于匹配识别的扫描,所述漏洞数据库中存储有标准sql注入漏洞代码段,将所述标准sql注入漏洞代码段与所述以抽象语法树表征的源码进行匹配识别,从而得到所述关键语句。

3.根据权利要求2所述的一种基于程序转换的sql注入漏洞防御方法,其特征在于,在所述步骤s3中,所述先验规则库中存储有预先设置的转换规则,所述转换规则用于将所述关键代码的编程风格从面相对象的编程风格转换为面相过程的编程风格。

4.一种基于程序转换的sql注入漏洞防御系统,其特征在于,所述系统包括:

5.根据权利要求4所述的一种基于程序转换的sql注入漏洞防御系统,其特征在于,第一处理单元具体被配置为:对...

【专利技术属性】
技术研发人员:陆余良袁也黄晖朱凯龙于璐赵军卢灿举赵家振张懿凡
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1