发明内容
针对上述现有技术存在的问题,本发明提供了一种基于Devops内生安全的源代码检测系统及方法。通过对基于Devops的待检测源代码的非正常更新和/或非正常运行进行采集、分析、记录及报警,在待检测源代码发生非正常更新和/或后,可通过电子数据平台实时监控记录和报警,实现基于Devops源代码的内生安全管理。
为了实现上述目的,本发明采用的一种基于Devops内生安全的源代码检测系统,包括:
接口单元:对待检测的源代码进行识别,并将待测源代码信息上报到WebService服务器;
WebService服务器,对接口单元进行管理,且对接口单元进行激活,并将上报到WebService服务器的待测源代码信息同步到自动化测试系统和电力平台数据库;
驱动引擎,通过WebService服务器获取电力平台数据库中需要被驱动的数据,交付数据给自动化测试系统进行作业驱动,同时监控自动化测试系统的运行状态,并将数据通过Webservice服务器提交至电力平台数据库;
自动化测试系统(QTP),对接入的电力数据和待测源代码结合在自动化测试系统内运行的非正常更新和/或非正常运行进行记录并报警;
电力平台数据库,用于对电力数据进行管理。
作为上述方案的进一步优化,还包括源代码软件变更信息系统,用于将待测源代码的软件变更信息同步到所述WebService服务器。
作为上述方案的进一步优化,上报到WebService服务器的源代码数据包括:源代码的编译语言、源代码的编译器版本。
作为上述方案的进一步优化,所述源代码软件变更信息包括源代码的版本信息、源代码的安全等级和源代码的下载信息。
作为上述方案的进一步优化,所述自动化测试系统包括:
编译单元,根据待测源代码的编译语言和编译器版本对待测源代码进行编译,获取编译信息;
第一检测单元,根据至少一个检测规则对编译信息进行静态分析检测,以确定静态检测结果;
第二检测单元,根据至少一个训练规则,通过驱动引擎调用电力平台数据库的电力数据,对编译信息进行动态分析检测,以确定动态分析结果;
报警单元,对接入的电力数据,待测源代码在自动化测试系统内运行接入的电力数据库的非正常更新和/或非正常运行进行记录并报警。
作为上述方案的进一步优化,所述WebService服务器包括:
数据获取单元,用于获取待测源代码数据及更新、变更情况;
数据清洗单元:将获取的待测源代码数据进行数据清洗处理
数据清洗处理包括缺失值处理,对于部分待测源代码中缺少信息或者因操作失误等原因造成的聚类或缺失,通常采用删除缺失值或填充缺失值的方式进行缺失值处理,以确保数据的完整性。
特征标准化单元,对待测源代码中的字符型变量进行标准化处理;
样本均衡单元,对待测源代码存在不均衡问题,采用过采样或欠采样的方法进行均衡处理;
随机欠采样是从多数类Smaj中随机选择一些样本组成样本集E。然后将样本集E从Smaj中移除。新的数据集Snew-maj=Smaj-E。
参数计算单元,对待测源代码基于匹配模型需求推算参数处理。
一种基于Devops内生安全的源代码检测系统的检测方法,包括如下步骤:
WebService服务器对接口单元进行激活;
其中,在接口单元接收到待测源代码后,接口单元将待测源代码上报到WebService服务器,以使得WebService服务器将上报的待测源代码与WebService服务器上已存在的源代码进行对比,若一致,则将该待测源代码激活,使接口单元处于激活状态。
利用接口单元对待测源代码进行识别;
通过接口单元识别的待测原代码,上报到WebService服务器,并同步上报给电力平台数据库;
通过源代码软件变更信息系统将待测源代码的软件变更信息同步到WebService服务器;
其中,源代码软件变更信息是指根据待测源代码的编译语言和编译器版本对待测源代码进行编译,并获取编译信息;
具体的,编译语言包括:C/C++编译语言、Java/JSP编译语言、C#编译语言、Python编译语言以及PHP编译语言;
编译器版本包括:C/C++编译器、Java/JSP编译器、C#编译器、Python编译器以及PHP编译器;
编译信息为使用C/C++编译器进行编译并获得的编译信息、使用Java/JSP编译器进行编译并获得的编译信息、使用C#编译器进行编译并获得的编译信息、使用Python编译器进行编译并获得的编译语言以及使用PHP编译器进行编译并获得的编译语言。
通过驱动引擎将WebService服务器获取的电力平台数据库中需要被驱动的数据,交付给自动化测试系统进行作业驱动,同时监控自动化测试系统的运行状态,并将数据通过Webservice服务器提交至电力平台数据库;
通过自动化测试系统(QTP)对接入的电力数据和待测源代码在自动化测试系统内运行的非正常更新和/或非正常运行进行记录并报警,并上报给电力平台数据库。
一种基于Devops内生安全的源代码检测方法,包括以下步骤:
对待识别的待检测源代码进行识别,确定待检测源代码的编程语言和编译器版本;
WebService服务器端对待检源测代码进行数据处理后,形成标准化中间表示;
基于标准化中间表示后的待检测源代码,从静态规则库中匹配测试规则序列,进行自动一体化检测,形成静态测试结果;
通过静态测试的待检测源代码,自动调用动态规则库中匹配测试规则序列,且匹配电力平台数据库的数据进行动态数据检测,并形成动态测试结果。
一种基于Devops内生安全的源代码检测方法,包括以下步骤:
进入自动化测试系统的待检测源代码,进行的待检测源代码的检测步骤,
自动调用动态规则库中匹配测试规则序列,且匹配电力平台数据库的数据进行动态数据检测;
若检测到该待检测源代码非正常更新,则识别该待检测源代码,并进行记录并报警,且匹配电力平台数据库的数据进行动态数据检测;
若检测到的待检测源代码正常更新,则自动调用动态规则库中匹配测试规则序列匹配该待检测源代码,且匹配电力平台数据库的数据进行动态数据检测;
若通过动态数据检测的源代码非正常运行,则识别该通过动态数据检测的源代码,并进行记录并报警;
若通过动态数据检测的源代码正常运行,则输出测试报告并存储到电力平台数据库中。
一种存储介质,所述存储介质上存储有基于Devops内生安全的源代码检测程序,所述基于Devops内生安全的源代码检测程序被处理器执行时实现如权利要求8所述的基于基于Devops内生安全的源代码检测方法的步骤。
本发明的一种基于Devops内生安全的源代码检测系统及方法,具备如下有益效果:
1)本发明的一种基于Devops内生安全的源代码检测系统及方法,对基于Devops的待检测源代码的非正常更新和/或非正常运行进行采集、分析、记录及报警,在待检测源代码发生非正常更新和/或后,可通过电子数据平台实时监控记录和报警,实现基于Devops源代码的内生安全管理。
2)本发明的一种基于Devops内生安全的源代码检测方法,通过对进入自动化检测系统的待检测源代码进行静态数据检测,以确认该进入自动化检测系统的待检测源代码是否发生非正常更新,若发生非正常更新,则对该待检测源代码进行报警并将该待检测源代码记录到电子数据平台,也就是可能存在的情况是该待检测源代码发生了变动,存在非正常更新的情况,记录其更新方式以及更新时间,自动化检测系统将当前源代码的信息上报到电子数据平台,若未发生非正常更新,则将当前源代码进行动态数据检测,以确认经过动态数据检测的源代码是否发生非正常运行,若发生非正常运行,则对该经过动态数据检测的源代码进行报警并将该经过动态数据检测的源代码记录到电子数据平台,也就是可能存在的情况是该经过动态数据检测的源代码发生了变动,存在非正常运行的情况,记录其运行方式以及运行时间,自动化检测系统将当前的源代码记录到电子数据平台,若未发生非正常运行,则将该经过动态数据检测安全标记并与电子数据平台原缓存信息比对,有更新后,将电子数据平台缓存的信息作为历史信息进行记录。以便于快速确认进入自动化检测系统中的待检测系统是否发生过非正常更新和/非正常运行。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参考图1,一种基于Devops内生安全的源代码检测系统,包括:
接口单元:对待检测的源代码进行识别,并将待测源代码信息上报到WebService服务器;
WebService服务器,对接口单元进行管理,且对接口单元进行激活,并将上报到WebService服务器的待测源代码信息同步到自动化测试系统和电力平台数据库;
源代码软件变更信息系统,用于将待测源代码的软件变更信息同步到所述WebService服务器。
驱动引擎,通过WebService服务器获取电力平台数据库中需要被驱动的数据,交付数据给自动化测试系统进行作业驱动,同时监控自动化测试系统的运行状态,并将数据通过Webservice服务器提交至电力平台数据库;
自动化测试系统(QTP),对接入的电力数据和待测源代码结合在自动化测试系统内运行的非正常更新和/或非正常运行进行记录并报警;
电力平台数据库,用于对电力数据进行管理。
作为上述方案的补充方案,上报到WebService服务器的源代码数据包括:源代码的编译语言、源代码的编译器版本。所述源代码软件变更信息包括源代码的版本信息、源代码的安全等级和源代码的下载信息。
进一步的,该一种基于Devops内生安全的源代码检测系统的具体实施例如图5所示:
具体的,所述一种基于Devops内生安全的源代码检测系统包括以下工作步骤:WebService服务器数据处理、数据清洗、特征标准化、样本均衡、参数计算、静态分析及动态训练以及缺陷处理,分属于数据处理、数据自动化检测以及缺陷处理这三大功能。
具体的,数据处理:数据处理所需的源代码信息主要包括项目经理交付的所需测试的源代码信息及特征和后续进行测试的源代码信息及特征,其中,项目经理交付的所需测试的源代码信息及特征包括历史的需测试的源代码信息及特征,和这些源代码信息及特征中哪些变更了哪些没有变更,其数据主要来源于电子数据库的历史数据,后续进行预测的需测试的源代码信息从项目经理处获得新的需测试的源代码信息;
获取数据后需要进行数据清洗,数据清洗是指对于部分待测源代码中缺少信息或者因操作失误等原因造成的聚类或缺失,通常采用删除缺失值或填充缺失值的方式进行缺失值处理,以确保数据的完整性。
考虑到待测源代码中含有字符型变量的问题以及含有不均衡的现象的问题,需要对待测源代码进行特征标准化以及样本均衡,并对待测源代码基于匹配模型需求进行推算参数处理。
静态分析及动态训练:将历史数据合理分成训练集和测试集,然后选择适当的分类器进行静态分析以及动态训练,得到结果评估该历史数据是否存在缺陷,即是否发生过非正常更新和/或非正常运行,并进行保存。
缺陷处理:
若经过静态分析及动态训练后的历史数据存在缺陷,即该历史数据发生过非正常更新和/或非正常运行,将该源代码信息发送给开发者,由开发者处理该源代码信息中存在的缺陷,直至满足要求;
若经过静态分析及动态训练后的历史数据不存在缺陷,则将该源代码信息进行安全标记并发送给项目经理。
进一步的,所述自动化测试系统包括:
编译单元,根据待测源代码的编译语言和编译器版本对待测源代码进行编译,获取编译信息;
第一检测单元,根据至少一个检测规则对编译信息进行静态分析检测,以确定静态检测结果;
第二检测单元,根据至少一个训练规则,通过驱动引擎调用电力平台数据库的电力数据,对编译信息进行动态分析检测,以确定动态分析结果;
报警单元,对接入的电力数据,待测源代码在自动化测试系统内运行接入的电力数据库的非正常更新和/或非正常运行进行记录并报警。
优选的,如图4所示,自动化测试系统的具体实施例如下所示:
大体可分为四个阶段:
编译阶段:在实际测试过程中,编译阶段主要包含接受待测源代码、确认待测源代码编译语言、待测源代码编译器版本以及编译待测源代码等过程,首先确认待测源代码的编译语言,然后确认待测源代码的编译器版本,并将待检测的源代码进行编译并获取一组更具体和精确的编译信息;
静态检测阶段:自动化测试系统在获取更为具体和精确的编译信息后,为静态测试做准备,测试过程中分为两个阶段,包括数据对比阶段以及后续的记录阶段,通常将获取的更具体和精准的编译信息与电子平台数据库中现有的电子数据进行对比,并大约对比2~3次,以确认该编译信息对应的源代码是否发生非正常更新,并将该检测后的源代码同步到电子数据平台;
动态检测阶段:自动化测试系统在获取经过静态检测阶段确认为未发生非正常更新的源代码对应的编译信息后,为动态测试做准备,测试过程分为两个阶段,包括数据训练阶段以及后续的记录阶段,通常将经过静态检测阶段确认为未发生非正常更新的源代码对应的编译信息进行动态训练,以确认该经过静态检测阶段确认为未发生非正常更新的源代码是否发生非正常运行,并将该检测后的源代码同步到电子数据平台;
报警阶段:在静态检测阶段或动态检测阶段中,自动化测试系统将检测到非正常更新或非正常运行的源代码进行报警,通常报警阶段包括几个活动,首先,汇总非正常更新或非正常运行的源代码,然后上报到电子数据平台,由电子数据平台定位问题并进行报警。
作为上述方案的进一步优化,所述WebService服务器包括:
数据获取单元,用于获取待测源代码数据及更新、变更情况;
数据清洗单元:将获取的待测源代码数据进行数据清洗处理
数据清洗处理包括缺失值处理,对于部分待测源代码中缺少信息或者因操作失误等原因造成的聚类或缺失,通常采用删除缺失值或填充缺失值的方式进行缺失值处理,以确保数据的完整性。
特征标准化单元,对待测源代码中的字符型变量进行标准化处理;
样本均衡单元,对待测源代码存在不均衡问题,采用过采样或欠采样的方法进行均衡处理;
随机欠采样是从多数类Smaj中随机选择一些样本组成样本集E。然后将样本集E从Smaj中移除。新的数据集Snew-maj=Smaj-E。
参数计算单元,对待测源代码基于匹配模型需求推算参数处理。
一种基于Devops内生安全的源代码检测系统的检测方法,包括如下步骤:
WebService服务器对接口单元进行激活;
具体的,在接口单元接收到待测源代码后,接口单元将待测源代码上报到WebService服务器,以使得WebService服务器将上报的待测源代码与WebService服务器上已存在的源代码进行对比,若一致,则将该待测源代码激活,使接口单元处于激活状态。
利用接口单元对待测源代码进行识别;
其中,接口单元识别的待测源代码信息包括源代码的版本信息、源代码的安全等级和源代码的下载信息。具体的,源代码的版本信息是指源代码的版本号,可作为源代码的身份证;源代码的安全等级是指源代码经过安全风险检测后确认的安全等级,若未通过安全风险检测,则显示提示信息为该源代码具有安全风险,若通过安全风险检测,则不显示提示信息。源代码的下载信息是指在该源代码未通过安全风险检测情况下,下载过该源代码的用户信息。
通过接口单元识别的待测原代码,上报到WebService服务器,并同步上报给电力平台数据库;
通过源代码软件变更信息系统将待测源代码的软件变更信息同步到WebService服务器;
其中,源代码软件变更信息是指根据待测源代码的编译语言和编译器版本对待测源代码进行编译,并获取编译信息;
具体的,编译语言包括:C/C++编译语言、Java/JSP编译语言、C#编译语言、Python编译语言以及PHP编译语言;
编译器版本包括:C/C++编译器、Java/JSP编译器、C#编译器、Python编译器以及PHP编译器;
编译信息为使用C/C++编译器进行编译并获得的编译信息、使用Java/JSP编译器进行编译并获得的编译信息、使用C#编译器进行编译并获得的编译信息、使用Python编译器进行编译并获得的编译语言以及使用PHP编译器进行编译并获得的编译语言。
通过驱动引擎将WebService服务器获取的电力平台数据库中需要被驱动的数据,交付给自动化测试系统进行作业驱动,同时监控自动化测试系统的运行状态,并将数据通过Webservice服务器提交至电力平台数据库;
其中,该驱动引擎采用轮询的方式去请求电力平台数据库,如果发现有新的源代码被分派到自动化测试系统,则驱动引擎准备从WebService服务器获取的电力平台数据库中需要被驱动的数据,并交付给自动化测试系统作业驱动并监控自动化测试系统的测试状态。若该驱动引擎未发现自动化测试系统接收到新的源代码,则驱动因此自身置于休眠状态,等待下个请求的到来;
通过自动化测试系统(QTP)对接入的电力数据和待测源代码在自动化测试系统内运行的非正常更新和/或非正常运行进行记录并报警,并上报给电力平台数据库。
实际工作过程中,若接口单元接收的待测源代码发生更新及报警时,自动化测试系统基于待检测源代码于电子数据平台库中历史版本信息,判断该待测源代码是否发生了变动,并进行记录,记录其更新方式及更新时间,若发生非正常更新和/或发生非正常运行,则将当前待检测源代码上报到电子平台数据库并报警。
本发明的一种基于Devops内生安全的源代码检测系统及方法,对基于Devops的待检测源代码的非正常更新和/或非正常运行进行采集、分析、记录及报警,在待检测源代码发生非正常更新和/或后,可通过电子数据平台实时监控记录和报警,实现基于Devops源代码的内生安全管理。
请参考图3,一种基于Devops内生安全的源代码检测方法,包括以下步骤:
对待识别的待检测源代码进行识别,确定待检测源代码的编程语言和编译器版本;
WebService服务器端对待检源测代码进行数据处理后,形成标准化中间表示;
基于标准化中间表示后的待检测源代码,从静态规则库中匹配测试规则序列,进行自动一体化检测,形成静态测试结果;
通过静态测试的待检测源代码,自动调用动态规则库中匹配测试规则序列,且匹配电力平台数据库的数据进行动态数据检测,并形成动态测试结果。
一种基于Devops内生安全的源代码检测方法,请参考图2,包括以下步骤:
进入自动化测试系统的待检测源代码,进行的待检测源代码的检测步骤,
自动调用动态规则库中匹配测试规则序列,且匹配电力平台数据库的数据进行动态数据检测;
若检测到该待检测源代码非正常更新,则识别该待检测源代码,并进行记录并报警;
若检测到的待检测源代码正常更新,则自动调用动态规则库中匹配测试规则序列匹配该待检测源代码,且匹配电力平台数据库的数据进行动态数据检测;
若通过动态数据检测的源代码非正常运行,则识别该通过动态数据检测的源代码,并进行记录并报警,且匹配电力平台数据库的数据进行动态数据检测;
若通过动态数据检测的源代码正常运行,则输出测试报告并存储到电力平台数据库中。
一种存储介质,所述存储介质上存储有基于Devops内生安全的源代码检测程序,所述基于Devops内生安全的源代码检测程序被处理器执行时实现如权利要求8所述的基于基于Devops内生安全的源代码检测方法的步骤。
本发明不局限于上述具体的实施方式,本领域的普通技术人员从上述构思出发不经过创造性的劳动,所做出的种种变换,均落在本发明的保护范围之内。