掌桥专利:专业的专利平台
掌桥专利
首页

一种对GO语言项目进行交互式应用安全测试的方法

文献发布时间:2024-04-18 19:59:31


一种对GO语言项目进行交互式应用安全测试的方法

技术领域

本发明公开一种方法,涉及应用测试技术领域,具体地说是一种对GO语言项目进行交互式应用安全测试的方法。

背景技术

应用安全测试方法主要包括静态应用程序安全测试(SAST)和动态应用程序安全测试(DAST)。SAST主要通过静态代码分析来检测应用程序中的安全漏洞,但它无法模拟应用程序的真实运行环境,同时会产生较高的误报率,并且无法检测到与运行时相关的漏洞。DAST则通过模拟攻击来测试应用程序的安全性,但它通常需要在应用程序运行时进行测试,无法提供准确的漏洞定位信息,并且测试过程对应用程序的性能和可用性会产生一定的影响。

为了克服上述方法的局限性,交互式应用安全测试应运而生,结合了SAST和DAST的优点,通过在应用程序运行时进行测试,并结合静态和动态分析技术,提供准确的漏洞定位和更低的误报率。它可以模拟应用程序的真实运行环境,检测到与运行时相关的漏洞,并提供实时的安全保护。但现有的交互式应用安全测试对在Go语言项目进行测试时,存在灵活性不够及安全性问题。

发明内容

本发明针对现有技术的问题,提供一种对GO语言项目进行交互式应用安全测试的方法,具有通用性强、实施简便等特点,具有广阔的应用前景。

本发明提出的具体方案是:

本发明提供一种对GO语言项目进行交互式应用安全测试的方法,包括:

步骤1:利用GO语言的解析器和编译器将GO语言项目的源代码解析为中间抽象语法树IAST,

步骤2:在中间抽象语法树IAST中根据规则和条件,定位需要插入安全测试探针的位置,

步骤3:根据所述需要插入安全测试探针的位置动态生成和插入安全测试探针代码,

步骤4:将插入安全测试探针代码后的中间抽象语法树IAST转换为可执行的代码,并进行编译,生成可执行文件或库,

步骤5:进行安全测试,执行可执行文件,触发安全测试探针的逻辑,通过分析安全测试探针的输出和日志,获取GO语言项目中的安全漏洞和弱点。

进一步,所述的一种对GO语言项目进行交互式应用安全测试的方法中所述步骤2中需要插入安全测试探针的位置,包括与安全相关的代码块,所述代码块包括函数调用处代码块、网络请求处代码块和敏感数据处理处代码块。

进一步,所述的一种对GO语言项目进行交互式应用安全测试的方法中所述安全测试探针代码,用于记录请求参数、检测敏感数据泄露、验证权限的操作,以及通过定义数据结构记录程序调用路径。

进一步,所述的一种对GO语言项目进行交互式应用安全测试的方法中还包括步骤6:根据安全测试的结果对安全漏洞和弱点进行分析和评估,对检测到的问题定位到对应方法及代码行,输出可视化的测试结果。

本发明还提供一种对GO语言项目进行交互式应用安全测试的装置,包括解析模块、定位模块、插入模块、转换模块和测试模块,

解析模块利用GO语言的解析器和编译器将GO语言项目的源代码解析为中间抽象语法树IAST,

定位模块在中间抽象语法树IAST中根据规则和条件,定位需要插入安全测试探针的位置,

插入模块根据所述需要插入安全测试探针的位置动态生成和插入安全测试探针代码,

转换模块将插入安全测试探针代码后的中间抽象语法树IAST转换为可执行的代码,并进行编译,生成可执行文件或库,

测试模块进行安全测试,执行可执行文件,触发安全测试探针的逻辑,通过分析安全测试探针的输出和日志,获取GO语言项目中的安全漏洞和弱点。

进一步,所述的一种对GO语言项目进行交互式应用安全测试的装置中所述定位模块插入安全测试探针的位置,包括与安全相关的代码块,所述代码块包括函数调用处代码块、网络请求处代码块和敏感数据处理处代码块。

进一步,所述的一种对GO语言项目进行交互式应用安全测试的装置中涉及的安全测试探针代码,用于记录请求参数、检测敏感数据泄露、验证权限的操作,以及通过定义数据结构记录程序调用路径。

进一步,所述的一种对GO语言项目进行交互式应用安全测试的装置中还包括分析模块,分析模块根据安全测试的结果对安全漏洞和弱点进行分析和评估,对检测到的问题定位到对应方法及代码行,输出可视化的测试结果。

本发明的有益之处是:

本发明提供一种对GO语言项目进行交互式应用安全测试的方法,通过使用IAST(Intermediate Abstract Syntax Tree)的插桩方式,结合GO语言的反射和动态代理技术,通过解析器和编译器的能力,实现在不修改原始对象的情况下完成交互式应用安全测试,可以在应用程序运行时检测到漏洞,并提供准确的漏洞定位信息,帮助开发人员及时发现和修复漏洞,并且使用代理模式不修改原始对象,提高应用程序的安全性。

附图说明

图1是本发明方法流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

本发明提供一种对GO语言项目进行交互式应用安全测试的方法,包括:

步骤1:利用GO语言的解析器和编译器将GO语言项目的源代码解析为中间抽象语法树IAST,

步骤2:在中间抽象语法树IAST中根据规则和条件,定位需要插入安全测试探针的位置,

步骤3:根据所述需要插入安全测试探针的位置动态生成和插入安全测试探针代码,

步骤4:将插入安全测试探针代码后的中间抽象语法树IAST转换为可执行的代码,并进行编译,生成可执行文件或库,

步骤5:进行安全测试,执行可执行文件,触发安全测试探针的逻辑,通过分析安全测试探针的输出和日志,获取GO语言项目中的安全漏洞和弱点。

本发明方法通过使用IAST(Intermediate Abstract Syntax Tree)的插桩方式,结合GO语言的反射和动态代理技术,通过解析器和编译器的能力,实现在不修改原始对象的情况下完成交互式应用安全测试。

具体应用中,在本发明方法的一些实施例中,对GO语言项目进行交互式应用安全测试,过程可参考如下:

步骤1:利用GO语言的解析器和编译器将GO语言项目的源代码解析为中间抽象语法树IAST。

步骤2:在中间抽象语法树IAST中根据规则和条件,定位需要插入安全测试探针的位置。

进一步,所述步骤2中需要插入安全测试探针的位置,包括与安全相关的代码块,所述代码块包括函数调用处代码块、网络请求处代码块和敏感数据处理处代码块。

步骤3:根据所述需要插入安全测试探针的位置动态生成和插入安全测试探针代码。其中可以根据安全测试的目标和范围,编写安全测试探针代码,将其插入到识别出的安全相关代码片段中。此时通过反射和动态代理技术,获取运行时业务对象,并动态创建一个代理对象,通过代理对象操作对象数据,保证业务数据的安全性。安全测试探针代码可以包括安全检测、日志记录、输入验证、权限控制等功能。所述安全测试探针代码,用于记录请求参数、检测敏感数据泄露、验证权限的操作,以及通过定义数据结构记录程序调用路径。

步骤4:将插入安全测试探针代码后的中间抽象语法树IAST转换为可执行的代码,并进行编译,生成可执行文件或库。

步骤5:进行安全测试,执行可执行文件,触发安全测试探针的逻辑,通过分析安全测试探针的输出和日志,获取GO语言项目中的安全漏洞和弱点。

进一步,所述的一种对GO语言项目进行交互式应用安全测试的方法中还包括步骤6:根据安全测试的结果对安全漏洞和弱点进行分析和评估,对检测到的问题定位到对应方法及代码行,输出可视化的测试结果。同时,制定相应的修复措施,并进行代码修改和优化。

本发明还提供一种对GO语言项目进行交互式应用安全测试的装置,包括解析模块、定位模块、插入模块、转换模块和测试模块,

解析模块利用GO语言的解析器和编译器将GO语言项目的源代码解析为中间抽象语法树IAST,

定位模块在中间抽象语法树IAST中根据规则和条件,定位需要插入安全测试探针的位置,

插入模块根据所述需要插入安全测试探针的位置动态生成和插入安全测试探针代码,

转换模块将插入安全测试探针代码后的中间抽象语法树IAST转换为可执行的代码,并进行编译,生成可执行文件或库,

测试模块进行安全测试,执行可执行文件,触发安全测试探针的逻辑,通过分析安全测试探针的输出和日志,获取GO语言项目中的安全漏洞和弱点。

上述装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

同样地,本发明装置通过使用IAST(Intermediate Abstract Syntax Tree)的插桩方式,结合GO语言的反射和动态代理技术,通过解析器和编译器的能力,实现在不修改原始对象的情况下完成交互式应用安全测试,可以在应用程序运行时检测到漏洞,并提供准确的漏洞定位信息,帮助开发人员及时发现和修复漏洞,并且使用代理模式不修改原始对象,提高应用程序的安全性。

需要说明的是,上述各流程和各装置结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。

以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

技术分类

06120116521800