一种风险监控的方法、装置、计算机设备及存储介质与流程

文档序号:28298543发布日期:2021-12-31 23:28阅读:74来源:国知局
一种风险监控的方法、装置、计算机设备及存储介质与流程

1.本技术属于网络基架运维技术领域,具体涉及一种风险监控的方法、装置、计算机设备及存储介质。


背景技术:

2.随着互联网时代的普及,科技能力成为衡量一个公司潜力的标准之一,如何利用it技术创造价值,是一个企业的核心竞争力。对于用户而言,最直接感受到的就是所使用的科技产品的系统体验,而在商机瞬息万变的今天,系统迭代更新尤为频繁,所以企业如何确保每次迭代版本的安全稳定,并在版本迭代过程中保证用户使用体验,是开发人员重点关注的方向。
3.目前,对于系统版本的迭代更新过程的风险监控一般是通过人为检测实现,例如,先通过业务分析人员,核实每个版本需求研发的内容,评估所涉及的功能模块;再通过技术研发人员针对每个版本进行检查系统发布事项,例如:系统配置,自动化部署文件,是否通过测试等;最后由运营人员确认是否填写紧急联系人,是否做过安全扫描等。现有的通过人为检测实现系统版本迭代更新过程的风险监控,存在大量重复工作,耗费了大量人力,且很难保证不出现遗漏。


技术实现要素:

4.本技术实施例的目的在于提出一种风险监控的方法、装置、计算机设备及存储介质,以解决现有风险监控方案存在的人力资源耗费过大且检测精度不高的技术问题。
5.为了解决上述技术问题,本技术实施例提供一种风险监控的方法,采用了如下所述的技术方案:
6.一种风险监控的方法,包括:
7.接收风险监控指令,获取程序代码对应的开发需求文档;
8.对所述开发需求文档进行关键词提取,得到风险关键词,并在所述程序代码中确定与所述风险关键词对应的风险代码;
9.生成所述风险代码对应的检测代码,并将所述检测代码插入所述程序代码中,生成测试代码;
10.在所述预设的操作系统中运行所述测试代码,并获取所述操作系统的日志文件和线程记录文件;
11.从所述线程记录文件中获取所述测试代码的实现线程,并从所述日志文件中查找所述实现线程的调用堆栈;
12.在所述调用堆栈中查找非操作系统函数,获取所述非操作系统函数的输出结果,并基于所述输出结果确定所述程序代码的风险情况。
13.进一步地,所述对所述开发需求文档进行关键词提取,得到风险关键词,并在所述程序代码中确定与所述风险关键词对应的风险代码的步骤,具体包括:
14.对所述开发需求文档进行分词处理,得到文本分词;
15.对所述文本分词进行预处理,以去除所述文本分词中的停用词;
16.基于预设的关键词提取算法,确定预处理后所述文本分词中的风险关键词;
17.在所述程序代码中查找与所述风险关键词对应的代码段,得到所述风险代码。
18.进一步地,所述生成所述风险代码对应的检测代码,并将所述检测代码插入所述程序代码中,生成测试代码的步骤,具体包括:
19.根据所述风险关键词确定所述风险代码的类型;
20.基于所述风险代码的类型,生成所述风险代码对应的检测代码;
21.将所述检测代码插入所述程序代码中的预定位置,生成测试代码。
22.进一步地,所述将所述检测代码插入所述程序代码中的预定位置,生成测试代码的步骤,具体包括:
23.在所述程序代码中创建新线程,并在所述程序代码中查找监控功能位置;
24.将所述新线程、所述监控功能位置和所述风险代码进行关联;
25.将所述检测代码分别添加到所述新线程和所述监控功能位置中,生成所述测试代码。
26.进一步地,所述在所述预设的操作系统中运行所述测试代码,并获取所述操作系统的日志文件和线程记录文件的步骤,具体包括:
27.将所述测试代码导入所述操作系统,在所述操作系统中编译并运行所述测试代码;
28.响应第一触发操作,确定所述测试代码对应的实现线程,并将所述实现线程存储到所述线程记录文件中,其中,第一触发操作为所述测试代码运行过程中所述新线程的触发操作;
29.响应第二触发操作,生成所述实现线程的调用堆栈,并将所述实现线程的调用堆栈存储到所述日志文件中,其中,所述第二触发操作为所述测试代码运行过程中所述监控功能位置的触发操作。
30.进一步地,所述调用堆栈中查找非操作系统函数,获取所述非操作系统函数的输出结果的步骤,具体包括:
31.根据函数调用顺序对所述调用堆栈的所有函数进行排序;
32.按照栈底到栈顶的顺序依次识别所述调用堆栈中各个函数的函数名,以确定所述调用堆栈中的非操作系统函数;
33.从所述日志文件中获取所述非操作系统函数的输出结果。
34.进一步地,所述基于所述输出结果确定所述程序代码的风险情况的步骤,具体包括:
35.在所述开发需求文档中,确定与所述风险关键词对应的标准输出结果;
36.比对所述非操作系统函数的输出结果与所述标准输出结果;
37.若所述非操作系统函数的输出结果与所述标准输出结果相符,则确定所述程序代码不存在安全风险;
38.若所述非操作系统函数的输出结果与所述标准输出结果不相符,则确定所述程序代码存在安全风险。
39.为了解决上述技术问题,本技术实施例还提供一种装置,采用了如下所述的技术方案:
40.一种风险监控的装置,包括:
41.文档获取模块,用于接收风险监控指令,获取程序代码对应的开发需求文档;
42.关键词提取模块,用于对所述开发需求文档进行关键词提取,得到风险关键词,并在所述程序代码中确定与所述风险关键词对应的风险代码;
43.代码生成模块,用于生成所述风险代码对应的检测代码,并将所述检测代码插入所述程序代码中,生成测试代码;
44.代码测试模块,用于在所述预设的操作系统中运行所述测试代码,并获取所述操作系统的日志文件和线程记录文件;
45.线程调用模块,用于从所述线程记录文件中获取所述测试代码的实现线程,并从所述日志文件中查找所述实现线程的调用堆栈;
46.风险监控模块,用于在所述调用堆栈中查找非操作系统函数,获取所述非操作系统函数的输出结果,并基于所述输出结果确定所述程序代码的风险情况。
47.为了解决上述技术问题,本技术实施例还提供一种计算机设备,采用了如下所述的技术方案:
48.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上述所述的风险监控的方法的步骤。
49.为了解决上述技术问题,本技术实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
50.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上述所述的风险监控的方法的步骤。
51.与现有技术相比,本技术实施例主要有以下有益效果:
52.本技术公开了一种风险监控的方法、装置、计算机设备及存储介质,属于网络基架运维技术领域。本技术在进行系统版本的迭代更新过程的程序代码进行风险检测时,先通过分析开发需求文档,以获得风险关键词,以及确定风险关键词对应的有可能存在风险因素的风险代码,并为风险代码配置相应的测试代码,以生成测试代码,在操作系统中运行测试代码,并从测试得到的线程记录文件中获取实现线程,以及从测试得到的日志文件中查找实现线程的调用堆栈,在调用堆栈中查找非操作系统函数,并获取非操作系统函数的输出结果,最后将非操作系统函数的输出结果与开发需求文档中的标准输出结果进行比较,以判断程序代码是否存在风险。本技术通过对关键词提取确定风险关键词,通过风险关键词确定程序代码中的风险代码,以便为风险代码配置测试代码,并在操作系统完成测试代码的运行后,通过测试结果中非操作系统函数的输出结果来自动判断程序代码是否存在风险,减少了测试人员的工作量,同时提高了代码风险检测的精度。
附图说明
53.为了更清楚地说明本技术中的方案,下面将对本技术实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
54.图1示出了本技术可以应用于其中的示例性系统架构图;
55.图2示出了根据本技术的风险监控的方法的一个实施例的流程图;
56.图3示出了根据本技术的风险监控的装置的一个实施例的结构示意图;
57.图4示出了根据本技术的计算机设备的一个实施例的结构示意图。
具体实施方式
58.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术;本技术的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本技术的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
59.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
60.为了使本技术领域的人员更好地理解本技术方案,下面将结合附图,对本技术实施例中的技术方案进行清楚、完整地描述。
61.如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
62.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
63.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(moving picture expertsgroup audio layer iii,动态影像专家压缩标准音频层面3)、mp4(moving pictureexperts group audio layeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
64.服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
65.需要说明的是,本技术实施例所提供的风险监控的方法一般由服务器执行,相应地,风险监控的装置一般设置于服务器中。
66.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
67.继续参考图2,示出了根据本技术的风险监控的的方法的一个实施例的流程图。本
申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
68.人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。所述的风险监控的方法,包括以下步骤:
69.s201,接收风险监控指令,获取程序代码对应的开发需求文档。
70.其中,在进行每一次的产品开发任务之前,产品经理都需要提前录入开发需求文档,然后由开发人员根据产品经理录入的开发需求文档进行产品开发,得到产品对应的程序代码,最后开发人员将开发的程序代码交给测试人员进行产品测试。其中,产品需求文档是将商业需求文档和市场需求文档用专业语言进行描述生成的指导产品开发的指示文档。产品需求文档包含有产品的战略和战术,例如产品定位、目标市场、目标用户、竞争对手、产品的结构、核心业务流程、具体用例描述、功能&内容描述、结果描述等。
71.在本实施例中,风险监控的方法运行于其上的电子设备(例如图1所示的服务器/终端设备)可以通过有线连接方式或者无线连接方式接收风险监控指令。需要指出的是,上述无线连接方式可以包括但不限于3g/4g连接、wifi连接、蓝牙连接、wimax连接、zigbee连接、uwb(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
72.具体的,在本技术中,开发人员根据产品经理录入的开发需求文档进行产品开发,得到程序代码之后,服务器接收用户输入的风险监控指令,获取程序代码对应的开发需求文档。
73.s202,对所述开发需求文档进行关键词提取,得到风险关键词,并在所述程序代码中确定与所述风险关键词对应的风险代码。
74.具体的,服务器在获取到程序代码对应的开发需求文档之后,基于预设的关键词提取算法对开发需求文档进行关键词提取,得到风险关键词,并在程序代码中确定与风险关键词对应的风险代码。
75.例如,在本技术一种具体的实施例中,开发需求文档的核心业务流程中存在获取用户隐私信息(联系电话、地址、身份证号等等)的操作步骤,则在程序使用过程中,可能会导致用户的敏感信息发生泄露,产品经理在撰写开发需求文档会注明该操作步骤实现时需要进行脱敏处理,开发人员在进行程序开发时,会在程序代码中会在该操作步骤加入相应的脱敏方案,此时该操作步骤对应的代码段即属于风险代码,在对操作步骤的标注说明信息进行关键词提取时,可以获得“用户”、“隐私”、“脱敏”等风险关键词,然后再查找开发文档获得上述风险关键词对应的代码段,得到风险代码。
76.s203,生成所述风险代码对应的检测代码,并将所述检测代码插入所述程序代码中,生成测试代码。
77.具体的,服务器根据风险代码对应的操作步骤的类型生成检测代码。例如,在上述实施例中,风险代码对应的操作步骤为私密信息录入和私密信息脱敏,则生成的检测代码类型为用于检测私密信息和脱敏信息中是否存在泄露风险。服务器在生成测试代码后,将
检测代码插入程序代码中的预定位置,生成测试代码。
78.s204,在所述预设的操作系统中运行所述测试代码,并获取所述操作系统的日志文件和线程记录文件。
79.具体的,服务器在将测试代码导入所述操作系统后,在操作系统中编译并运行测试代码,在测试代码运行过程中响应用户操作,并在测试代码运行结束后,获取操作系统的日志文件和线程记录文件。其中,日志文件记录了操作系统在测试过程中发生的事件记录,线程记录文件记录了操作系统在测试过程中的线程间调用关系。
80.本技术具体的实施例中,操作系统可以是ios操作系统或安卓操作系统,或者其他可以运行测试代码的操作系统,将测试代码安装于操作系统中后,在操作系统中正常运行测试代码,以检测测试代码中是否存在风险代码。在操作系统中运行测试代码的过程中,为了能够记录测试代码的可疑的操作信息,可以预先在测试代码中可能存在风险的代码段中加入检测代码。
81.s205,从所述线程记录文件中获取所述测试代码的实现线程,并从所述日志文件中查找所述实现线程的调用堆栈。
82.具体的,服务器在完成代码测试之后,调用线程记录文件和日志文件,从线程记录文件中获取测试代码的实现线程,并从日志文件中查找实现线程的调用堆栈。其中,调用堆栈,也叫执行堆栈,具有lifo(last in,first out后进先出)结构,用于存储在代码执行期间创建的所有执行上下文。当服务器引擎首次读取测试代码时,会创建一个全局执行上下文并将其push到当前执行堆栈中。每当执行堆栈发生函数调用时,服务器引擎都会为该函数创建一个新的执行上下文并push到当前执行栈的栈顶。服务器引擎会运行执行上下文在执行栈栈顶的函数,根据lifo规则,当此函数运行完成后,其对应的执行上下文将会从执行栈中pop出,上下文控制权将转到当前执行栈的下一个执行上下文。
83.s206,在所述调用堆栈中查找非操作系统函数,获取所述非操作系统函数的输出结果,并基于所述输出结果确定所述程序代码的风险情况。
84.具体的,服务器在查找实现线程的调用堆栈之后,遍历调用堆栈中的系统函数,并获取其中的非操作系统函数,其中,非操作系统函数指的是系统函数中实现程序代码功能的函数,按照函数调用顺序,从栈底到栈顶的函数中,逐个查找出非操作系统函数,然后在日志文件中查找各个非操作系统函数的输出结果,并基于非操作系统函数的输出结果和开发需求文档中记录的标准输出结果,确定程序代码的风险情况。
85.在本实施例中,本技术在进行系统版本的迭代更新过程的程序代码进行风险检测时,先通过分析开发需求文档,以获得风险关键词,以及确定风险关键词对应的有可能存在风险因素的风险代码,并为风险代码配置相应的测试代码,以生成测试代码,在操作系统中运行测试代码,并从测试得到的线程记录文件中获取实现线程,以及从测试得到的日志文件中查找实现线程的调用堆栈,在调用堆栈中查找非操作系统函数,并获取非操作系统函数的输出结果,最后将非操作系统函数的输出结果与开发需求文档中的标准输出结果进行比较,以判断程序代码是否存在风险。本技术通过对关键词提取确定风险关键词,通过风险关键词确定程序代码中的风险代码,以便为风险代码配置测试代码,并在操作系统完成测试代码的运行后,通过测试结果中非操作系统函数的输出结果来自动判断程序代码是否存在风险,减少了测试人员的工作量,同时提高了代码风险检测的精度。
86.进一步地,所述对所述开发需求文档进行关键词提取,得到风险关键词,并在所述程序代码中确定与所述风险关键词对应的风险代码的步骤,具体包括:
87.对所述开发需求文档进行分词处理,得到文本分词;
88.对所述文本分词进行预处理,以去除所述文本分词中的停用词;
89.基于预设的关键词提取算法,确定预处理后所述文本分词中的风险关键词;
90.在所述程序代码中查找与所述风险关键词对应的代码段,得到所述风险代码。
91.具体的,一般而言,开发需求文档为文本文档。服务器在获取开发需求文档后,对开发需求文档进行分词处理,得到文本分词,对文本分词进行预处理,预处理包括去除停用词处理,以便去除文本分词中的停用词,并基于预设的关键词提取算法,确定去除停用词后的文本分词中的风险关键词,最后在程序代码中查找与风险关键词对应的代码段,得到风险代码。
92.其中,预设的关键词提取算法可以采用lda主题模型关键词提取算法、tf

idf关键词提取算法或textrank关键词提取算法中的任意一种,对此本技术并不做具体的限定。
93.在本实施例中,本技术通过预设的关键词提取算法提取开发需求文档中的风险关键词,以便在程序代码中查找与风险关键词对应的风险代码。
94.进一步地,所述生成所述风险代码对应的检测代码,并将所述检测代码插入所述程序代码中,生成测试代码的步骤,具体包括:
95.根据所述风险关键词确定所述风险代码的类型;
96.基于所述风险代码的类型,生成所述风险代码对应的检测代码;
97.将所述检测代码插入所述程序代码中的预定位置,生成测试代码。
98.具体的,服务器通过对风险关键词进行进行语义分析,并基于风险关键词的语义分析结果确定风险代码的类型,基于风险代码的类型,生成风险代码对应的检测代码,最后将检测代码插入程序代码中的预定位置,生成测试代码。
99.在本技术一种具体的实施例中,风险代码对应的操作步骤为私密信息录入和私密信息脱敏,则生成的检测代码类型为用于检测私密数据和脱敏数据中是否存在风险;再如,风险代码对应的操作步骤为视频录制和视频加密,则生成的检测代码类型为用于检测视频录像和加密录像中是否存在风险。
100.在本实施例中,本技术通过语义分析获得风险代码所属的类型,以便于为风险代码生成对应的检测代码。
101.进一步地,所述将所述检测代码插入所述程序代码中的预定位置,生成测试代码的步骤,具体包括:
102.在所述程序代码中创建新线程,并在所述程序代码中查找监控功能位置;
103.将所述新线程、所述监控功能位置和所述风险代码进行关联;
104.将所述检测代码分别添加到所述新线程和所述监控功能位置中,生成所述测试代码。
105.具体的,服务器遍历程序代码的当前线程,并在程序代码的当前线程上创建新线程,然后把检测代码添加到新线程中,同时服务器在程序代码中查找监控功能位置,并把检测代码添加到监控功能位置,其中,监控功能位置为程序代码开发基础框架上自带的功能位置之一,用于实现程序代码的功能监控,监控功能位置可供用户自由配置,如可以在监控
功能位置插入用于检测程序代码功能的检测代码。服务器在创建新线程和查找监控功能位置之后,将新线程、监控功能位置和对应的风险代码进行关联,并将检测代码分别添加到新线程和监控功能位置中,生成测试代码。
106.在上述实施例中,本技术通过在程序代码的当前线程上创建新线程和在程序代码中查找监控功能位置,并将监控功能位置和风险代码进行关联,然后把上一步骤中生成的检测代码分别添加到新线程和监控功能位置,实现对风险代码的监控。
107.进一步地,所述在所述预设的操作系统中运行所述测试代码,并获取所述操作系统的日志文件和线程记录文件的步骤,具体包括:
108.将所述测试代码导入所述操作系统,在所述操作系统中编译并运行所述测试代码;
109.响应第一触发操作,确定所述测试代码对应的实现线程,并将所述实现线程存储到所述线程记录文件中,其中,第一触发操作为所述测试代码运行过程中所述新线程的触发操作;
110.响应第二触发操作,生成所述实现线程的调用堆栈,并将所述实现线程的调用堆栈存储到所述日志文件中,其中,所述第二触发操作为所述测试代码运行过程中所述监控功能位置的触发操作。
111.具体的,服务器将测试代码导入预设的操作系统,在操作系统中编译并运行测试代码。在测试代码运行过程中,服务器响应第一触发操作,确定测试代码对应的实现线程,并将实现线程存储到线程记录文件中,其中,第一触发操作为测试代码运行过程中新线程的触发操作。同时,在测试代码运行过程中,服务器响应第二触发操作,生成实现线程的调用堆栈,并将实现线程的调用堆栈存储到日志文件中,其中,第二触发操作为测试代码运行过程中监控功能位置的触发操作。需要说明的是,在测试代码运行过程中,操作系统每一次调用风险代码时,都会分别响应一次第一触发操作和一次第二触发操作。
112.在上述实施例中,本技术通过操作系统中编译并运行测试代码,获得测试代码的实现线程和调用堆栈,同时在测试代码运行过程中,记录测试代码的实现线程和调用堆栈,以便后续进行风险代码的风险评估。
113.进一步地,所述调用堆栈中查找非操作系统函数,获取所述非操作系统函数的输出结果的步骤,具体包括:
114.根据函数调用顺序对所述调用堆栈的所有函数进行排序;
115.按照栈底到栈顶的顺序依次识别所述调用堆栈中各个函数的函数名,以确定所述调用堆栈中的非操作系统函数;
116.从所述日志文件中获取所述非操作系统函数的输出结果。
117.具体的,服务器根据函数调用顺序对调用堆栈的所有函数进行排序,一般按照后进先出的原则进行排序。然后服务器按照栈底到栈顶的顺序依次识别调用堆栈中各个函数的函数名,以确定调用堆栈中的非操作系统函数,其中,调用堆栈中函数包括操作系统函数和非操作系统函数。最后服务器从日志文件中获取非操作系统函数的输出结果,其中,日志文件记录了操作系统在测试过程中发生的事件记录,其中也包括各个函数对应的输出结果。
118.进一步地,所述基于所述输出结果确定所述程序代码的风险情况的步骤,具体包
括:
119.在所述开发需求文档中,确定与所述风险关键词对应的标准输出结果;
120.比对所述非操作系统函数的输出结果与所述标准输出结果;
121.若所述非操作系统函数的输出结果与所述标准输出结果相符,则确定所述程序代码不存在安全风险;
122.若所述非操作系统函数的输出结果与所述标准输出结果不相符,则确定所述程序代码存在安全风险。
123.具体的,服务器在开发需求文档中,确定与风险关键词对应的标准输出结果,比对非操作系统函数的输出结果与标准输出结果,如果非操作系统函数的输出结果与标准输出结果相符,则确定程序代码不存在安全风险;如果非操作系统函数的输出结果与标准输出结果不相符,则确定程序代码存在安全风险,输出风险提示信息。
124.本技术公开了一种风险监控的方法,属于网络基架运维技术领域。本技术在进行系统版本的迭代更新过程的程序代码进行风险检测时,先通过分析开发需求文档,以获得风险关键词,以及确定风险关键词对应的有可能存在风险因素的风险代码,并为风险代码配置相应的测试代码,以生成测试代码,在操作系统中运行测试代码,并从测试得到的线程记录文件中获取实现线程,以及从测试得到的日志文件中查找实现线程的调用堆栈,在调用堆栈中查找非操作系统函数,并获取非操作系统函数的输出结果,最后将非操作系统函数的输出结果与开发需求文档中的标准输出结果进行比较,以判断程序代码是否存在风险。本技术通过对关键词提取确定风险关键词,通过风险关键词确定程序代码中的风险代码,以便为风险代码配置测试代码,并在操作系统完成测试代码的运行后,通过测试结果中非操作系统函数的输出结果来自动判断程序代码是否存在风险,减少了测试人员的工作量,同时提高了代码风险检测的精度。
125.需要强调的是,为进一步保证上述开发需求文档的私密和安全性,上述开发需求文档还可以存储于一区块链的节点中。
126.本技术所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
127.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read

only memory,rom)等非易失性存储介质,或随机存储记忆体(random access memory,ram)等。
128.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他
步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
129.进一步参考图3,作为对上述图2所示方法的实现,本技术提供了一种风险监控的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
130.如图3所示,本实施例所述的风险监控的装置包括:
131.文档获取模块301,用于接收风险监控指令,获取程序代码对应的开发需求文档;
132.关键词提取模块302,用于对所述开发需求文档进行关键词提取,得到风险关键词,并在所述程序代码中确定与所述风险关键词对应的风险代码;
133.代码生成模块303,用于生成所述风险代码对应的检测代码,并将所述检测代码插入所述程序代码中,生成测试代码;
134.代码测试模块304,用于在所述预设的操作系统中运行所述测试代码,并获取所述操作系统的日志文件和线程记录文件;
135.线程调用模块305,用于从所述线程记录文件中获取所述测试代码的实现线程,并从所述日志文件中查找所述实现线程的调用堆栈;
136.风险监控模块306,用于在所述调用堆栈中查找非操作系统函数,获取所述非操作系统函数的输出结果,并基于所述输出结果确定所述程序代码的风险情况。
137.进一步地,所述关键词提取模块302具体包括:
138.分词处理单元,用于对所述开发需求文档进行分词处理,得到文本分词;
139.预处理单元,用于对所述文本分词进行预处理,以去除所述文本分词中的停用词;
140.关键词提取单元,用于基于预设的关键词提取算法,确定预处理后所述文本分词中的风险关键词;
141.代码查找单元,用于在所述程序代码中查找与所述风险关键词对应的代码段,得到所述风险代码。
142.进一步地,所述代码生成模块303具体包括:
143.类型判别单元,用于根据所述风险关键词确定所述风险代码的类型;
144.代码生成单元,用于基于所述风险代码的类型,生成所述风险代码对应的检测代码;
145.代码插入单元,用于将所述检测代码插入所述程序代码中的预定位置,生成测试代码。
146.进一步地,所述代码插入单元具体包括:
147.查找创建子单元,用于在所述程序代码中创建新线程,并在所述程序代码中查找监控功能位置;
148.代码关联子单元,用于将所述新线程、所述监控功能位置和所述风险代码进行关联;
149.代码插入子单元,用于将所述检测代码分别添加到所述新线程和所述监控功能位置中,生成所述测试代码。
150.进一步地,所述代码测试模块304具体包括:
151.编译运行单元,用于将所述测试代码导入所述操作系统,在所述操作系统中编译并运行所述测试代码;
specific integrated circuit,asic)、可编程门阵列(field-programmable gate array,fpga)、数字处理器(digital signal processor,dsp)、嵌入式设备等。
166.所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
167.所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作系统和各类应用软件,例如风险监控的方法的计算机可读指令等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
168.所述处理器42在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的计算机可读指令或者处理数据,例如运行所述风险监控的方法的计算机可读指令。
169.所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
170.本技术公开了一种计算机设备,属于网络基架运维技术领域。本技术在进行系统版本的迭代更新过程的程序代码进行风险检测时,先通过分析开发需求文档,以获得风险关键词,以及确定风险关键词对应的有可能存在风险因素的风险代码,并为风险代码配置相应的测试代码,以生成测试代码,在操作系统中运行测试代码,并从测试得到的线程记录文件中获取实现线程,以及从测试得到的日志文件中查找实现线程的调用堆栈,在调用堆栈中查找非操作系统函数,并获取非操作系统函数的输出结果,最后将非操作系统函数的输出结果与开发需求文档中的标准输出结果进行比较,以判断程序代码是否存在风险。本技术通过对关键词提取确定风险关键词,通过风险关键词确定程序代码中的风险代码,以便为风险代码配置测试代码,并在操作系统完成测试代码的运行后,通过测试结果中非操作系统函数的输出结果来自动判断程序代码是否存在风险,减少了测试人员的工作量,同时提高了代码风险检测的精度。
171.本技术还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的风险监控的方法的步骤。
172.本技术公开了一种存储介质,属于网络基架运维技术领域。本技术在进行系统版本的迭代更新过程的程序代码进行风险检测时,先通过分析开发需求文档,以获得风险关键词,以及确定风险关键词对应的有可能存在风险因素的风险代码,并为风险代码配置相
应的测试代码,以生成测试代码,在操作系统中运行测试代码,并从测试得到的线程记录文件中获取实现线程,以及从测试得到的日志文件中查找实现线程的调用堆栈,在调用堆栈中查找非操作系统函数,并获取非操作系统函数的输出结果,最后将非操作系统函数的输出结果与开发需求文档中的标准输出结果进行比较,以判断程序代码是否存在风险。本技术通过对关键词提取确定风险关键词,通过风险关键词确定程序代码中的风险代码,以便为风险代码配置测试代码,并在操作系统完成测试代码的运行后,通过测试结果中非操作系统函数的输出结果来自动判断程序代码是否存在风险,减少了测试人员的工作量,同时提高了代码风险检测的精度。
173.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。
174.本技术可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
175.显然,以上所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例,附图中给出了本技术的较佳实施例,但并不限制本技术的专利范围。本技术可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本技术的公开内容的理解更加透彻全面。尽管参照前述实施例对本技术进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本技术说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本技术专利保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1