CN109684847B - 脚本漏洞的自动修复方法、装置、设备及存储介质 - Google Patents

脚本漏洞的自动修复方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN109684847B
CN109684847B CN201811047645.5A CN201811047645A CN109684847B CN 109684847 B CN109684847 B CN 109684847B CN 201811047645 A CN201811047645 A CN 201811047645A CN 109684847 B CN109684847 B CN 109684847B
Authority
CN
China
Prior art keywords
script
error
repair
bug
repairing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811047645.5A
Other languages
English (en)
Other versions
CN109684847A (zh
Inventor
王芳草
徐志成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201811047645.5A priority Critical patent/CN109684847B/zh
Publication of CN109684847A publication Critical patent/CN109684847A/zh
Application granted granted Critical
Publication of CN109684847B publication Critical patent/CN109684847B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Abstract

本发明提供一种脚本漏洞的自动修复方法、装置、设备及存储介质,该方法包括:服务器根据脚本报错信息确定本次脚本报错的错误类型;根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案;获取对应脚本源文件,基于所述目标修复方案将所述对应脚本源文件进行修复,得到修复后的脚本源文件;用所述修复后的脚本源文件覆盖所述对应脚本源文件,并将所述修复后的脚本源文件发送到客户端。本发明通过收集脚本漏洞相关的海量基础数据,使用大数据技术处理所述基础数据后得到脚本漏洞及其对应修复方案,服务器根据该脚本漏洞及其对应修复方案对脚本漏洞进行自动修复,提升客户端脚本漏洞的修复速度,降低修复成本。

Description

脚本漏洞的自动修复方法、装置、设备及存储介质
技术领域
本发明涉及脚本漏洞修复技术领域,尤其涉及一种脚本漏洞的自动修复方法、装置、设备及存储介质。
背景技术
现有技术中,客户端浏览器出现JavaScript漏洞(简称脚本漏洞)时,客户端将脚本漏洞错误信息上传到服务器,再由开发人员对该脚本漏洞进行手动修复。通常由开发人员使用与报错信息来源客户端相同的机型和系统还原脚本漏洞出现的环境,以复现脚本漏洞,再针对该脚本漏洞进行调试确定脚本漏洞的出现原因并确定解决方案,再将解决方案/程序手动上传服务器。
上述对脚本漏洞的修复,耗费的人力资源巨大,因而亟需一种脚本漏洞的自动修复方法。
发明内容
本发明的主要目的在于提供一种脚本漏洞的自动修复方法,旨在解决现有的脚本漏洞修复方案中人工参与过多的技术问题。
为实现上述目的,本发明提供一种脚本漏洞的自动修复方法,其特征在于,所述脚本漏洞的自动修复方法包括以下步骤:
服务器在检测到来自客户端的所述脚本报错信息时,根据所述脚本报错信息确定本次脚本报错的错误类型;
根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案;
根据所述脚本报错信息获取对应脚本源文件,基于所述目标修复方案将所述对应脚本源文件进行修复,得到修复后的脚本源文件;
用所述修复后的脚本源文件覆盖所述对应脚本源文件,并将所述修复后的脚本源文件发送到客户端,以完成对脚本漏洞的自动修复。
可选地,所述根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案的步骤包括:
根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,判断脚本漏洞修复列表中是否存在所述本次脚本报错的错误类型对应的目标修复方案;
若脚本漏洞修复列表中存在目标修复方案,则直接获取对应的目标修复方案;
若脚本漏洞修复列表中不存在目标修复方案,则输出人工修复提示,以通知开发人员对所述脚本报错的错误类型提供人工修复方案;
记录所述人工修复方案,将所述本次脚本报错的错误类型和人工修复方案存入脚本漏洞修复列表。
可选地,所述基于所述目标修复方案将所述对应脚本源文件进行修复的步骤包括:
获取所述对应脚本源文件与其运行文件的对应位置文件,根据该对应位置文件和所述脚本报错信息确定本次脚本报错在所述对应脚本源文件中对应的错误代码位置;
基于所述目标修复方案将所述对应脚本源文件中所述错误代码位置处的代码进行修复。
可选地,所述服务器在检测到来自客户端的所述脚本报错信息时,根据所述脚本报错信息确定本次脚本报错的错误类型的步骤之前包括:
在脚本源代码的预设位置设置第一监听程序以进行异常捕捉,并基于第二监听程序对脚本源代码进行异常的全局监听,以供客户端在基于所述第一监听程序和第二监听程序检测到异常时,将检测到的异常发送至服务器。
可选地,所述在脚本源代码的预设位置设置第一监听程序以进行异常捕捉的步骤包括:
判断所述脚本源代码中是否存在异步函数块;
若所述脚本源代码中存在异步函数块,则对该异步函数块设置第一监听程序,并在脚本源代码的第一位置设置第一监听程序以进行异常捕捉。
可选地,所述根据所述本次脚本报错的错误类型查询脚本漏洞修复列表的步骤之前包括:
定时从第三方平台获取新增脚本漏洞,在收集到新增的第一脚本漏洞时,获得该第一脚本漏洞的第一错误类型及其对应的第一修复方案;
将所述第一错误类型与脚本漏洞修复列表中的错误类型进行对比,判断脚本漏洞修复列表中,是否存在与所述第一错误类型完全一致的第二错误类型;
若脚本漏洞修复列表中不存在所述第二错误类型,则将所述第一错误类型及其对应的第一修复方案添加到脚本漏洞修复列表中。
可选地,所述判断脚本漏洞修复列表中,是否存在与所述第一错误类型完全一致的第二错误类型的步骤之后包括:
若脚本漏洞修复列表中存在所述第二错误类型,则判断所述第一修复方案与所述第二错误类型对应的第二修复方案是否相同;
若所述第一修复方案与所述第二修复方案不相同,则将所述第一修复方案添加到脚本漏洞修复列表中。
此外,为实现上述目的,本发明还提供一种脚本漏洞的自动修复装置,所述脚本漏洞的自动修复装置包括:
类型分析模块,用于在服务器检测到来自客户端的所述脚本报错信息时,根据所述脚本报错信息确定本次脚本报错的错误类型;
修复方案查询模块,用于根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案;
修复模块,用于根据所述脚本报错信息获取对应脚本源文件,基于所述目标修复方案将所述对应脚本源文件进行修复,得到修复后的脚本源文件;用所述修复后的脚本源文件覆盖所述对应脚本源文件,并将所述修复后的脚本源文件发送到客户端,以完成对脚本漏洞的自动修复。
此外,为实现上述目的,本发明还提供一种脚本漏洞的自动修复设备,所述脚本漏洞的自动修复设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的脚本漏洞的自动修复程序,其中所述脚本漏洞的自动修复程序被所述处理器执行时,实现如上述的脚本漏洞的自动修复方法的步骤。
此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有脚本漏洞的自动修复程序,其中所述脚本漏洞的自动修复程序被处理器执行时,实现如上述的脚本漏洞的自动修复方法的步骤。
本发明实施例通过脚本报错的自动报错、自动上报机制,可使得服务器获取脚本报错的错误详情,可使得开发人员明确出错位置,无需客户配合协调调试脚本漏洞,也无需开发人员使用同样的机型同样的系统去还原客户的环境,以进行脚本漏洞调试,减少了准备这些外在因素所需花费的时间和人力,同时,在服务器接收到脚本漏洞报错后,可根据脚本漏洞修复列表进行自动修复,降低了修复脚本漏洞所需的人力成本,也提升了修复效率,为客户端用户提供更好的体验。
附图说明
图1是本发明实施例方案涉及的终端硬件运行环境的终端结构示意图;
图2为本发明脚本漏洞的自动修复方法第一实施例的流程示意图;
图3为本发明实施例中根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案的步骤的细化流程示意图;
图4为本发明脚本漏洞的自动修复装置第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明中脚本指JavaScript,JavaScript是一种直译式脚本语言,它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。
本发明脚本漏洞的自动修复方法实施例的实现终端为服务器,可以是PC,也可以是智能手机、平板电脑、便携计算机等具有显示功能的可移动式终端设备。
如图1所示,图1是本发明实施例方案涉及的终端硬件运行环境的终端结构示意图。
本发明实施例中,该终端可以包括处理器1001(例如CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种存储介质的存储器1005可以包括操作系统、网络通信模块以及脚本漏洞的自动修复程序。
在图1中,网络通信模块主要用于连接数据库,与数据库进行数据通信;而处理器1001可以调用存储器1005中存储的脚本漏洞的自动修复程序,实现如下述脚本漏洞的自动修复方法各实施例的步骤。
基于上述的终端硬件结构,提出本发明脚本漏洞的自动修复方法的各个实施例。
本发明提供一种脚本漏洞的自动修复方法。
参照图2,图2为本发明脚本漏洞的自动修复方法第一实施例的流程示意图。
本实施例中,所述脚本漏洞的自动修复方法包括以下步骤:
步骤S10,服务器在检测到来自客户端的所述脚本报错信息时,根据所述脚本报错信息确定本次脚本报错的错误类型;
本实施例中,脚本报错信息包括报错的代码文件、报错代码行号和错误详情、浏览器信息,还可以包括用户的身份信息,因为有些代码分支根据用户身份的不同而不同,方便排障;可选地,根据信息类型将上报的脚本报错信息划分为多个模块,以便服务器可针对性获取所需信息,例如,报错的代码文件、报错代码行号同属一个模块,用于确定报错源代码位置;浏览器信息、用户的身份信息同属另一个模块,错误详情为一个模块。
服务器具有专门的脚本报错收集接口,用于接收客户端发送的脚本报错信息。客户端发送脚本报错信息的发送形式可以是通过Ajax(指异步JavaScript及XML(Asynchronous JavaScript And XML))发送数据,也可以通过动态创建img标签发送数据。
服务器在接收到客户端发送的脚本报错信息时,根据该脚本报错信息确定本次脚本报错的错误类型。
当客户端浏览器上的JavaScript引擎执行JavaScript代码时,会发生各种错误:可能是语法错误,通常是程序员造成的编码错误或错别字;可能是拼写错误或语言中缺少的功能(可能由于浏览器自身差异);可能是由于来自服务器或用户的错误输出而导致的错误。当然,也可能是由于许多其他不可预知的因素。脚本报错常见的错误类型有:语法错误、引用错误、逻辑错误等,例如:
**Uncaught SyntaxError:Invalid shorthand property initializer**(语法错误:简称的属性初始化不完整)
**Uncaught ReferenceError:f is not defined**(引用错误:f未定义),
**Uncaught TypeError:Assignment to constant variable**(类型错误:指派常数为变量)
**Uncaught SyntaxError:Unexpectd token**(代码中有符号出现错误)
在一实施例中,脚本报错信息中的错误详情包括本次脚本报错的错误类型,即,在对脚本报错的错误类型进行识别后,再将识别得到的错误类型附加在脚本报错信息中发送到服务器,服务器可直接从报错信息中获取本次脚本报错的错误类型;在另一实施例中,脚本报错信息中的错误详情不包括本次脚本报错的错误类型,在服务器接收到脚本报错信息后,再根据脚本报错信息对本次脚本报错进行错误类型的识别。其中,错误类型可以根据编码、符号等标识唯一确定,例如,语法错误标识号为10XX,引用错误为20XX,类型错误为30XX,语法错误/引用错误/类型错误的细分错误类型,可以改变语法错误/引用错误/类型错误标识号后两位,如语法错误的细分1为1001、细分2为1002。
本实施例中,可以事先通过对大量脚本错误样本的分析,提取每种错误类型的错误特征,以建立错误类型特征库;在服务器/客户端需要对脚本报错进行错误类型的识别时,提取脚本报错的错误详情,将脚本报错的错误详情与所述错误类型特征库中各错误特征进行匹配,以识别本次脚本报错的错误类型。
步骤S20,根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案;
在服务器进行脚本漏洞的自动修复之前,需要建立脚本漏洞修复列表。脚本漏洞修复列表,由服务器通过收集脚本漏洞相关的海量基础数据,使用大数据技术分析处理所述海量基础数据后得到脚本漏洞及其对应修复方案,获得的所有所述脚本漏洞及其对应修复方案即形成了本实施例中的脚本漏洞修复列表。
脚本漏洞修复列表包括脚本错误类型及其对应的目标修复方案,可以由开发人员导入预先建立的脚本漏洞修复列表,也可以由服务器自动生成,具体地,如图3,所述脚本漏洞的自动修复方法包括:
步骤S21,根据所述本次脚本报错的错误类型查询脚本漏洞修复列表;
步骤S22,判断脚本漏洞修复列表中是否存在所述本次脚本报错的错误类型对应的目标修复方案;
因为错误类型及其对应的目标修复方案关联存储,在查询脚本漏洞修复列表时,只需将本次脚本报错的错误类型与脚本漏洞修复列表中的错误类型进行对比,若脚本漏洞修复列表中存在本次脚本报错的错误类型,则进一步判断脚本漏洞修复列表中有无对应的目标修复方案,若脚本漏洞修复列表中不存在本次脚本报错的错误类型,则可确定脚本漏洞修复列表中不存在所述脚本报错的错误类型对应的目标修复方案。
步骤S23,若脚本漏洞修复列表中存在目标修复方案,则直接获取对应的目标修复方案;
如果脚本漏洞修复列表中存在目标修复方案,则可直接获取目标修复方案,并根据目标修复方案对本次脚本报错进行自动修复,即直接从脚本漏洞修复列表中获取对应的目标修复方案进行自动修复。预置脚本漏洞修复列表,存储常见bug的修复方案,以便服务器在接收到客户端的脚本报错时,可以根据脚本漏洞修复列表获取修复方案,由服务器自动解决脚本报错修复的问题,既快速,又降低了bug修复的人力依赖性,降低人力成本。
步骤S24,若脚本漏洞修复列表中不存在目标修复方案,则输出人工修复提示,以通知开发人员对所述脚本报错的错误类型提供人工修复方案;
如果脚本漏洞修复列表中不存在目标修复方案,则可能在建立脚本漏洞修复列表时遗漏了部分方案,或者本次脚本报错的错误类型属于必须要人工进行修复的错误类型,则为了成功修复,输出人工修复提示,可以将人工修复提示推送到开发人员的个人终端或邮箱或短信或专门的报错平台,以通知开发人员对所述脚本报错的错误类型提供人工修复方案。
步骤S25,记录所述人工修复方案,将所述本次脚本报错的错误类型和人工修复方案存入脚本漏洞修复列表。
因为很多脚本漏洞类型可能在事先无法全部预料到,所以,脚本漏洞修复列表中的错误类型及其目标修复方案可能无法解决全部脚本报错,本实施例中,通过记录人工修复方案,并将其存入脚本漏洞修复列表,可以使得脚本漏洞修复列表随着使用时间越长,其包含的错误类型及其目标修复方案越多、越全面。
在开发人员对bug进行人工修复时,系统记录其人工修复过程,以学习如何对该错误类型的脚本报错进行修复,将人工修复方案或者基于人工修复方案分析获得的机器修复方案与其错误类型一起存入脚本漏洞修复列表。
一实施例中,可通过机器学习技术,将人工修复方案及脚本漏洞修复列表原有的错误类型及其目标修复方案作为学习样本,以建立脚本漏洞修复模型;在检测到脚本报错信息时,将根据所述脚本报错信息确定的本次脚本报错的错误类型作为脚本漏洞修复模型的输入参数,获得输出结果,基于所述输出结果对本次脚本报错进行修复。
本实施例中,在脚本漏洞修复列表中不存在目标修复方案时,寻求人工修复帮助,以保证脚本漏洞顺利修复,同时,基于人工修复方案,补充脚本漏洞修复列表,填补其错误类型及目标修复方案的空白,使得脚本漏洞修复列表随着时间的增长,其包含的错误类型及其目标修复方案越多、越全面,可自动修复的错误类型也越多,提高脚本漏洞修复的智能化与自动化,降低人力成本,提高修复效率。
步骤S30,根据所述脚本报错信息获取对应脚本源文件,基于所述目标修复方案将所述对应脚本源文件进行修复,得到修复后的脚本源文件;
脚本报错信息中包含报错的代码文件、报错代码行号,因此,可以根据脚本报错信息中这些信息确定对应脚本源文件以及对应的错误代码位置,再通过服务器的一个操作文件的程序,根据所述目标修复方案修复对应的错误代码,得到修复后的脚本源文件,并用修复后的脚本源文件覆盖原来的所述对应脚本源文件。
步骤S40,用所述修复后的脚本源文件覆盖所述对应脚本源文件,并将所述修复后的脚本源文件发送到客户端,以完成对脚本漏洞的自动修复。
在服务器端修复完成后,可以由服务器主动将修复后的脚本源文件发送到客户端,也可以由客户端向服务器请求,服务器在接收到客户端请求后,再将修复后的脚本源文件发送到客户端。
本实施例通过服务器在检测到来自客户端的所述脚本报错信息时,根据所述脚本报错信息确定本次脚本报错的错误类型;根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案;根据所述脚本报错信息获取对应脚本源文件,基于所述目标修复方案将所述对应脚本源文件进行修复,得到修复后的脚本源文件;用所述修复后的脚本源文件覆盖所述对应脚本源文件,并将所述修复后的脚本源文件发送到客户端,以完成对脚本漏洞的自动修复,通过脚本报错的自动报错、自动上报机制,可使得服务器获取脚本报错的错误详情,可使得开发人员明确出错位置,无需客户配合协调调试脚本漏洞,也无需开发人员使用同样的机型同样的系统去还原客户的环境,以进行脚本漏洞调试,减少了准备这些外在因素所需花费的时间和人力,同时,在服务器接收到脚本漏洞报错后,可根据脚本漏洞修复列表进行自动修复,降低了修复脚本漏洞所需的人力成本,也提升了修复效率,为客户端用户提供更好的体验。
在客户端运行的脚本代码可能是源码经过压缩、多文件合并或其他语言编译成JavaScript等转换后得到的,在出现脚本报错时,因为实际运行代码与源码是不同的,即使知道实际运行代码中脚本报错的具体位置,也不能直接根据该位置确定源码中的错误位置。为解决这一问题,提出本实施例。
进一步地,所述步骤S30中所述基于所述目标修复方案将所述对应脚本源文件进行修复的步骤包括:
步骤S31,获取所述对应脚本源文件与其运行文件的对应位置文件,根据该对应位置文件和所述脚本报错信息确定本次脚本报错在所述对应脚本源文件中对应的错误代码位置;
对应位置文件是一个信息文件,里面储存着位置信息,即转换后的运行代码的每一个位置,所对应的转换前的源代码位置。在一实施例中,所述对应位置文件为Source map文件,可以存储在网络上,也可以放在本地文件系统。从脚本报错信息中确定报错代码文件和报错代码行号,根据对应位置文件可确定所述报错代码行号对应脚本源文件的错误代码位置。
步骤S32,基于所述目标修复方案将所述对应脚本源文件中所述错误代码位置处的代码进行修复。
根据目标修复方案,将对应脚本源文件中所述错误代码位置处的代码进行修改,或者基于所述错误代码位置处的代码生成正确代码,将正确代码覆盖原有的所述错误代码位置处的代码,以完成修复。
本实施例通过设置对应位置文件,存储所述对应脚本源文件与其运行文件的代码位置对应关系,使得在根据脚本报错信息确定运行文件中报错代码行号后,可结合对应位置文件确定在对应脚本源文件中的错误代码位置,以对该错误代码位置处的源代码进行针对性的修复,顺利完成对脚本报错的修复。
进一步地,在本发明脚本漏洞的自动修复方法第二实施例中,所述步骤S10之前包括:
步骤S50,在脚本源代码的预设位置设置第一监听程序以进行异常捕捉,并基于第二监听程序对脚本源代码进行异常的全局监听,以供客户端在基于所述第一监听程序和第二监听程序检测到异常时,将检测到的异常发送至服务器。
本实施例中,第一监听程序与第二监听程序不是同一程序,第一监听程序可以为try...catch语句,第二监听程序可以为window.onerror函数。
try...catch语句可以捕捉代码中的错误,其中,try部分包含需要运行的代码,而catch部分包含错误发生时运行的代码,如果try中的代码没有出错,则程序正常运行try中的内容后,不会执行catch中的内容,若try中的代码出错,则程序执行catch中的内容,可在catch中设置程序,将报错代码的详细信息打印出来或将异常对象写入日志文件,再将其上报服务器。
脚本源代码的预设位置指脚本源代码中可能出现异常的地方,可以给整个脚本源代码设置一个总的第一监听程序(try-catch语句),再在每个容易出问题的地方设置第一监听程序(try-catch语句)。
通过在开发过程中,在脚本源代码预设位置处设置第一监听程序作为异常捕捉触发点,脚本代码在客户端运行过程中,触发点被触发进而捕获到异常,再根据异常信息生成脚本报错信息发送到服务器。
window.onerror函数在页面发生脚本错误时被调用,该函数可收集到错误字符串信息、发生错误的脚本文件,错误所在的行数、列数、和Error对象(里面会有调用堆栈信息等),将这些信息回传到服务器。
其中,当运行代码块出错时,try-catch语句将捕获到错误信息,并将错误信息按预置程序打印或抛出,页面将继续执行或等待服务器返回修复文件后继续执行。try-catch主要用于在预置情况下监控特定错误,而window.onerror可捕获预料之外的错误,且,try-catch无法捕捉语法报错,而window.onerror可捕捉当前页面的语法错误或运行时报错。因此,可将try-catch和window.onerror这两种异常监控方式结合,使得异常监控更高效。
进一步地,所述在脚本源代码的预设位置设置第一监听程序以进行异常捕捉的步骤包括:
步骤S51,判断所述脚本源代码中是否存在异步函数块;
步骤S52,若所述脚本源代码中存在异步函数块,则对该异步函数块设置第一监听程序,并在脚本源代码的第一位置设置第一监听程序以进行异常捕捉。
若脚本源代码中存在异步函数块,则需要对该异步函数块设置第一监听程序,否则在所述脚本源代码的运行代码中有异步报错时,无法捕捉该异步报错。在第一监听程序为try-catch语句时,需要对异步函数块进行try-catch包装。可选地,还可增加标识信息来配合定位。
本实施例中的脚本源代码的第一位置,指脚本源代码中异步函数块以外的、可能出现异常的位置。
本实施例通过将第一监听程序作为异常捕捉触发点,并基于第二监听程序对脚本源代码进行异常的全局监听,结合二者实现对客户端脚本运行代码的异常监控,提高异常监控的准确性与识别的高效性,可以更清晰地定位问题,及时修复漏洞,解决用户问题。
进一步地,在本发明脚本漏洞的自动修复方法第三实施例中,所述根据所述本次脚本报错的错误类型查询脚本漏洞修复列表的步骤之前包括:
步骤S60,定时从第三方平台获取新增脚本漏洞;
步骤S61,在收集到新增的第一脚本漏洞时,获得该第一脚本漏洞的第一错误类型及其对应的第一修复方案;
定时从第三方平台脚本漏洞发布平台或其他第三方平台脚本漏洞收集系统获取新增脚本漏洞,因为本发明实施例中的脚本漏洞修复列表的更新渠道比较多,为避免脚本漏洞的重复存储,需要对收集到的新增脚本漏洞(为便于阅读理解,本文将其称为第一脚本漏洞)的第一错误类型及其对应的第一修复方案进行避重判断。
步骤S62,将所述第一错误类型与脚本漏洞修复列表中的错误类型进行对比,判断脚本漏洞修复列表中,是否存在与所述第一错误类型完全一致的第二错误类型;
步骤S63,若脚本漏洞修复列表中不存在所述第二错误类型,则将所述第一错误类型及其对应的第一修复方案添加到脚本漏洞修复列表中。
若脚本漏洞修复列表中,存在与所述第一错误类型完全一致的第一错误类型,则需要继续判断第一错误类型是否有新的修复方案,即判断所述第一修复方案与第二修复方案是否相同;若脚本漏洞修复列表中,不存在与所述第一错误类型完全一致的第一错误类型,则可直接将第一错误类型及其对应的第一修复方案存入脚本漏洞修复列表中。
即,所述步骤S62之后还包括:
步骤S64,若脚本漏洞修复列表中存在所述第二错误类型,则判断所述第一修复方案与所述第二错误类型对应的第二修复方案是否相同;
步骤S65,若所述第一修复方案与所述第二修复方案不相同,则将所述第一修复方案添加到脚本漏洞修复列表中。
对于已有的脚本漏洞,可能出现新的修复方案,则在收集新增脚本漏洞时,在确定脚本漏洞修复列表中存在与所述第一错误类型相同的第二错误类型后,还需继续判断对应的修复方案是否有更新,以丰富脚本漏洞修复列表中的修复方案。其中,一种错误类型可能对应多种修复方案。
若第一修复方案与脚本漏洞修复列表中第二修复方案不相同,则将第一修复方案添加到脚本漏洞修复列表中,作为所述第二错误类型的修复方案之一
本实施例通过定时从第三方平台获取新增脚本漏洞,丰富脚本漏洞修复列表中的错误类型以及修复方案,使得随着时间的增长,脚本漏洞修复列表存储的错误类型以及修复方案越多,服务器可自动修复的错误类型增多,可提升修复的自动化程度,提升修复效率。
进一步地,本发明还可包括一种应用于客户端的脚本漏洞的自动修复方法,所述方法包括:
步骤S70,在检测到脚本报错时,判断所述脚本报错是否属于非同域的外部脚本异常;
和步骤S71,若所述脚本报错属于外部脚本异常,则将所述脚本报错的来源站点附加在脚本报错信息中发送至服务器。
浏览器出于安全上的考虑,若是页面引用的非同域的外部脚本中抛出了异常,则本页面无权限获得这个异常详情,将输出Script error的错误信息。一实施例中,可通过资源的同源化修复这种类型的错误,具体地,所述资源的同源化包括:将脚本代码内联到html文件中;或将脚本文件与html文件放到同一域名下。
另一实施例中,可通过步骤S70和步骤S71,将外部脚本的来源站点附加在脚本报错信息中发送至服务器,使服务器实现CORS接口,以实现跨源通信。
可通过判断是否输出Script error来判断脚本报错是否属于非同域的外部脚本异常,若是,则获取该脚本报错对应脚本的来源站点,将其附加在脚本报错信息中;服务器在接收到脚本报错信息后,若检测到脚本报错信息中包含了来源站点,则服务器根据该来源站点进行跨来源资源共享,若服务器可进行跨来源资源共享,则正常响应,服务器返回支持共享的指示信息,若不可支持,返回不支持的指示信息。
本实施例通过在检测到脚本报错时,判断所述脚本报错是否属于非同域的外部脚本异常;若所述脚本报错属于外部脚本异常,则将所述脚本报错的来源站点附加在脚本报错信息中发送至服务器,可通过给脚本报错信息带上非同域的外部脚本异常的来源站点,使服务器实现CORS接口,以实现跨源通信,从而能够看到具体报错信息,使得服务器能支持跨站访问控制,实现安全地跨站数据传输。
此外,本发明还提供一种脚本漏洞的自动修复装置。
参照图4,图4为本发明脚本漏洞的自动修复装置第一实施例的功能模块示意图。
本实施例中,所述脚本漏洞的自动修复装置包括:
类型分析模块10,用于在服务器检测到来自客户端的所述脚本报错信息时,根据所述脚本报错信息确定本次脚本报错的错误类型;
修复方案查询模块20,用于根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案;
修复模块30,用于根据所述脚本报错信息获取对应脚本源文件,基于所述目标修复方案将所述对应脚本源文件进行修复,得到修复后的脚本源文件;用所述修复后的脚本源文件覆盖所述对应脚本源文件,并将所述修复后的脚本源文件发送到客户端,以完成对脚本漏洞的自动修复。
进一步的,所述脚本漏洞的自动修复装置还包括:
所述修复方案查询模块20,还用于根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,判断脚本漏洞修复列表中是否存在所述本次脚本报错的错误类型对应的目标修复方案;若脚本漏洞修复列表中存在目标修复方案,则直接获取对应的目标修复方案;
人工修复提醒模块,用于若脚本漏洞修复列表中不存在目标修复方案,则输出人工修复提示,以通知开发人员对所述脚本报错的错误类型提供人工修复方案;
人工修复记录模块,用于记录所述人工修复方案,将所述本次脚本报错的错误类型和人工修复方案存入脚本漏洞修复列表。
进一步的,所述脚本漏洞的自动修复装置还包括:
错误位置确定模块,用于获取所述对应脚本源文件与其运行文件的对应位置文件,根据该对应位置文件和所述脚本报错信息确定本次脚本报错在所述对应脚本源文件中对应的错误代码位置;
所述修复模块,还用于基于所述目标修复方案将所述对应脚本源文件中所述错误代码位置处的代码进行修复。
进一步的,所述脚本漏洞的自动修复装置还包括:
异常监控设置模块,用于在脚本源代码的预设位置设置第一监听程序以进行异常捕捉,并基于第二监听程序对脚本源代码进行异常的全局监听,以供客户端在基于所述第一监听程序和第二监听程序检测到异常时,将检测到的异常发送至服务器。
进一步的,所述脚本漏洞的自动修复装置还包括:
第一判断模块,用于判断所述脚本源代码中是否存在异步函数块;
所述异常监控设置模块,还用于若所述脚本源代码中存在异步函数块,则对该异步函数块设置第一监听程序,并在脚本源代码的第一位置设置第一监听程序以进行异常捕捉。
进一步的,所述脚本漏洞的自动修复装置还包括:
漏洞收集模块,用于定时从第三方平台获取新增脚本漏洞;
所述类型分析模块,还用于在收集到新增的第一脚本漏洞时,获得该第一脚本漏洞的第一错误类型及其对应的第一修复方案;
第二判断模块,用于将所述第一错误类型与脚本漏洞修复列表中的错误类型进行对比,判断脚本漏洞修复列表中,是否存在与所述第一错误类型完全一致的第二错误类型;
修复列表补充模块,用于若脚本漏洞修复列表中不存在所述第二错误类型,则将所述第一错误类型及其对应的第一修复方案添加到脚本漏洞修复列表中。
进一步地,所述脚本漏洞的自动修复装置还包括:
第三判断模块,用于若脚本漏洞修复列表中存在所述第二错误类型,则判断所述第一修复方案与所述第二错误类型对应的第二修复方案是否相同;
所述修复列表补充模块,还用于若所述第一修复方案与所述第二修复方案不相同,则将所述第一修复方案添加到脚本漏洞修复列表中。
此外,本发明还提供一种存储介质。
本发明存储介质上存储有脚本漏洞的自动修复程序,其中所述脚本漏洞的自动修复程序被处理器执行时,实现如上述的脚本漏洞的自动修复方法的步骤。
其中,脚本漏洞的自动修复程序被执行时所实现的方法可参照本发明脚本漏洞的自动修复方法的各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (9)

1.一种脚本漏洞的自动修复方法,其特征在于,应用于服务器,所述脚本漏洞的自动修复方法包括以下步骤:
服务器在检测到来自客户端的脚本报错信息时,根据所述脚本报错信息确定本次脚本报错的错误类型;
根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案;
根据所述脚本报错信息获取对应脚本源文件,基于所述目标修复方案将所述对应脚本源文件进行修复,得到修复后的脚本源文件;
用所述修复后的脚本源文件覆盖所述对应脚本源文件,并将所述修复后的脚本源文件发送到客户端,以完成对脚本漏洞的自动修复;
在所述服务器在检测到来自客户端的所述脚本报错信息时,根据所述脚本报错信息确定本次脚本报错的错误类型的步骤之前包括:
在脚本源代码的预设位置设置第一监听程序以进行异常捕捉,并基于第二监听程序对脚本源代码进行异常的全局监听,以供客户端在基于所述第一监听程序和第二监听程序检测到异常时,将检测到的异常发送至服务器。
2.如权利要求1所述的脚本漏洞的自动修复方法,其特征在于,所述根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案的步骤包括:
根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,判断脚本漏洞修复列表中是否存在所述本次脚本报错的错误类型对应的目标修复方案;
若脚本漏洞修复列表中存在目标修复方案,则直接获取对应的目标修复方案;
若脚本漏洞修复列表中不存在目标修复方案,则输出人工修复提示,以通知开发人员对所述脚本报错的错误类型提供人工修复方案;
记录所述人工修复方案,将所述本次脚本报错的错误类型和人工修复方案存入脚本漏洞修复列表。
3.如权利要求1所述的脚本漏洞的自动修复方法,其特征在于,所述基于所述目标修复方案将所述对应脚本源文件进行修复的步骤包括:
获取所述对应脚本源文件与其运行文件的对应位置文件,根据该对应位置文件和所述脚本报错信息确定本次脚本报错在所述对应脚本源文件中对应的错误代码位置;
基于所述目标修复方案将所述对应脚本源文件中所述错误代码位置处的代码进行修复。
4.如权利要求1所述的脚本漏洞的自动修复方法,其特征在于,所述在脚本源代码的预设位置设置第一监听程序以进行异常捕捉的步骤包括:
判断所述脚本源代码中是否存在异步函数块;
若所述脚本源代码中存在异步函数块,则对该异步函数块设置第一监听程序,并在脚本源代码的第一位置设置第一监听程序以进行异常捕捉。
5.如权利要求1所述的脚本漏洞的自动修复方法,其特征在于,所述根据所述本次脚本报错的错误类型查询脚本漏洞修复列表的步骤之前包括:
定时从第三方平台获取新增脚本漏洞;
在收集到新增的第一脚本漏洞时,获得该第一脚本漏洞的第一错误类型及其对应的第一修复方案;
将所述第一错误类型与脚本漏洞修复列表中的错误类型进行对比,判断脚本漏洞修复列表中,是否存在与所述第一错误类型完全一致的第二错误类型;
若脚本漏洞修复列表中不存在所述第二错误类型,则将所述第一错误类型及其对应的第一修复方案添加到脚本漏洞修复列表中。
6.如权利要求5所述的脚本漏洞的自动修复方法,其特征在于,所述判断脚本漏洞修复列表中,是否存在与所述第一错误类型完全一致的第二错误类型的步骤之后包括:
若脚本漏洞修复列表中存在所述第二错误类型,则判断所述第一修复方案与所述第二错误类型对应的第二修复方案是否相同;
若所述第一修复方案与所述第二修复方案不相同,则将所述第一修复方案添加到脚本漏洞修复列表中。
7.一种脚本漏洞的自动修复装置,其特征在于,所述脚本漏洞的自动修复装置包括:
类型分析模块,用于在服务器检测到来自客户端的脚本报错信息时,根据所述脚本报错信息确定本次脚本报错的错误类型;
修复方案查询模块,用于根据所述本次脚本报错的错误类型查询脚本漏洞修复列表,获取对应的目标修复方案;
修复模块,用于根据所述脚本报错信息获取对应脚本源文件,基于所述目标修复方案将所述对应脚本源文件进行修复,得到修复后的脚本源文件;用所述修复后的脚本源文件覆盖所述对应脚本源文件,并将所述修复后的脚本源文件发送到客户端,以完成对脚本漏洞的自动修复;
所述脚本漏洞的自动修复装置还包括:
异常监控设置模块,用于在脚本源代码的预设位置设置第一监听程序以进行异常捕捉,并基于第二监听程序对脚本源代码进行异常的全局监听,以供客户端在基于所述第一监听程序和第二监听程序检测到异常时,将检测到的异常发送至服务器。
8.一种脚本漏洞的自动修复设备,其特征在于,所述脚本漏洞的自动修复设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的脚本漏洞的自动修复程序,其中所述脚本漏洞的自动修复程序被所述处理器执行时,实现如权利要求1至6中任一项所述的脚本漏洞的自动修复方法的步骤。
9.一种存储介质,其特征在于,所述存储介质上存储有脚本漏洞的自动修复程序,其中所述脚本漏洞的自动修复程序被处理器执行时,实现如权利要求1至6中任一项所述的脚本漏洞的自动修复方法的步骤。
CN201811047645.5A 2018-09-07 2018-09-07 脚本漏洞的自动修复方法、装置、设备及存储介质 Active CN109684847B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811047645.5A CN109684847B (zh) 2018-09-07 2018-09-07 脚本漏洞的自动修复方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811047645.5A CN109684847B (zh) 2018-09-07 2018-09-07 脚本漏洞的自动修复方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN109684847A CN109684847A (zh) 2019-04-26
CN109684847B true CN109684847B (zh) 2023-05-23

Family

ID=66185101

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811047645.5A Active CN109684847B (zh) 2018-09-07 2018-09-07 脚本漏洞的自动修复方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN109684847B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858113B (zh) * 2019-04-30 2024-03-12 北京达佳互联信息技术有限公司 应用程序的修复方法、装置、业务系统及存储介质
CN112579250B (zh) * 2019-09-30 2024-02-02 奇安信安全技术(珠海)有限公司 中间件的管理方法及装置、修复引擎系统
CN111010391A (zh) * 2019-12-12 2020-04-14 杭州安恒信息技术股份有限公司 一种漏洞修复方法、装置及其相关设备
CN111240882B (zh) * 2020-01-16 2020-11-20 深圳开源互联网安全技术有限公司 检测异常状态的方法及系统
CN111865927B (zh) * 2020-06-24 2024-04-05 天翼安全科技有限公司 基于系统的漏洞处理方法、装置、计算机设备和存储介质
CN111930550A (zh) * 2020-08-18 2020-11-13 政采云有限公司 一种客户端修复方法、装置、设备及介质
CN113886122B (zh) * 2021-09-30 2024-03-01 济南浪潮数据技术有限公司 一种系统运行异常处理方法、装置、设备及存储介质
CN117014178A (zh) * 2023-06-05 2023-11-07 深圳市前海望潮科技有限公司 一种用于网络安全的漏洞检测系统
CN117235744B (zh) * 2023-11-14 2024-02-02 中关村科学城城市大脑股份有限公司 源文件上线方法、装置、电子设备和计算机可读介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106897624A (zh) * 2017-01-16 2017-06-27 深圳开源互联网安全技术有限公司 一种漏洞检测方法及其装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5725529B2 (ja) * 2010-07-21 2015-05-27 日本電気株式会社 Web脆弱性補修システム、Web脆弱性補修方法、及びプログラム
CN106815135B (zh) * 2015-11-30 2021-04-06 阿里巴巴集团控股有限公司 漏洞检测方法及装置
CN107506647A (zh) * 2017-07-28 2017-12-22 努比亚技术有限公司 漏洞自动修复方法及移动终端
CN107908402A (zh) * 2017-08-15 2018-04-13 口碑(上海)信息技术有限公司 Java服务端热修复方法和系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106897624A (zh) * 2017-01-16 2017-06-27 深圳开源互联网安全技术有限公司 一种漏洞检测方法及其装置

Also Published As

Publication number Publication date
CN109684847A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109684847B (zh) 脚本漏洞的自动修复方法、装置、设备及存储介质
CN107908541B (zh) 接口测试方法、装置、计算机设备及存储介质
CN107688530B (zh) 软件测试方法及装置
CN108563768B (zh) 不同数据模型的数据转换方法、装置、设备及存储介质
CN110287109B (zh) 协议接口的测试方法、装置、计算机设备及其存储介质
KR102157712B1 (ko) 정보 유출 검출 방법 및 장치
CN107870860B (zh) 埋点验证系统及方法
CN107957940B (zh) 一种测试日志处理方法、系统及终端
CN108628748B (zh) 自动化测试管理方法和自动化测试管理系统
CN110704297B (zh) 代码评审方法、装置、计算机设备及存储介质
CN112559354A (zh) 前端代码规范检测方法、装置、计算机设备及存储介质
CN111866016A (zh) 日志的分析方法及系统
CN111563051A (zh) 基于爬虫的数据核验方法、装置、计算机设备及存储介质
CN110737594A (zh) 自动生成测试用例的数据库标准符合性测试方法及装置
CN110647471A (zh) 接口测试用例生成方法、电子装置及存储介质
CN112269744A (zh) 系统异常测试方法、装置、计算机设备和存储介质
CN104462983A (zh) 一种php源代码处理方法及系统
CN112817853A (zh) 一种自动测试方法、系统和电子设备
CN110096442B (zh) 代码调试方法、用户设备、存储介质及装置
CN110716843A (zh) 系统故障分析处理方法、装置、存储介质及电子设备
CN114035789A (zh) 日志解析模板的生成方法、日志解析方法、装置及设备
US10664340B2 (en) Failure analysis program, failure analysis device, and failure analysis method
CN111124828A (zh) 一种数据处理方法、装置、设备及存储介质
CN110688315A (zh) 接口代码检测报告生成方法、电子装置及存储介质
CN116016270A (zh) 一种交换机测试管理方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant