CN112114870A - 一种打包代码的方法、装置、终端设备和存储介质 - Google Patents
一种打包代码的方法、装置、终端设备和存储介质 Download PDFInfo
- Publication number
- CN112114870A CN112114870A CN202010995066.4A CN202010995066A CN112114870A CN 112114870 A CN112114870 A CN 112114870A CN 202010995066 A CN202010995066 A CN 202010995066A CN 112114870 A CN112114870 A CN 112114870A
- Authority
- CN
- China
- Prior art keywords
- sensitive word
- sensitive
- code
- target code
- packaging
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请适用于信息安全技术领域,提出一种打包代码的方法、装置、终端设备和存储介质。该方法包括:将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,所述敏感词过滤插件包含预配置的敏感词列表;在启动所述模块打包工具对目标代码进行打包的过程中,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词;若所述目标代码中没有与所述敏感词列表匹配的敏感词,则完成所述目标代码的打包操作。采用该方法能够找出代码中具有的敏感词,并在确定代码中不含敏感词后才完成该代码的打包操作,从而减少后续代码发布的时候扫描得到敏感词的概率,提高代码发布的成功率和效率。
Description
技术领域
本申请属于信息安全技术领域,尤其涉及一种打包代码的方法、装置、终端设备和存储介质。
背景技术
在软件发布的最后阶段,一般需要将代码发送至信息安全部门进行扫描,以确认代码中是否包含某些敏感词。若扫描发现敏感词,需要将代码退回给开发人员,让开发人员进行修改,之后再重新发布。然而,软件发布流程通常需要经过层层审批,假如通过扫描发现敏感词而需要修改并重新发布代码,十分费时费力。
发明内容
有鉴于此,本申请提出一种打包代码的方法、装置、终端设备和存储介质,能够在前端打包代码的时候检测出代码中的敏感词,从而减少后续代码发布的时候扫描得到敏感词的概率,提高代码发布的成功率和效率。
第一方面,本申请实施例提供了一种打包代码的方法,包括:
将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,所述敏感词过滤插件包含预配置的敏感词列表;
在启动所述模块打包工具对目标代码进行打包的过程中,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词;
若所述目标代码中没有与所述敏感词列表匹配的敏感词,则完成所述目标代码的打包操作。
本申请实施例将敏感词过滤插件引入模块打包工具,在采用模块打包工具打包代码的过程中,通过该敏感词过滤插件找出代码中具有的敏感词,并在确定代码中不含敏感词后才完成该代码的打包操作,能够在前端打包代码的时候检测出代码中的敏感词,从而减少后续代码发布的时候扫描得到敏感词的概率,提高代码发布的成功率和效率。
进一步的,将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,可以包括:
通过输入的指定命令行语句,从指定服务器获取预先上传的所述敏感词过滤插件的程序包;
将获取的所述程序包安装至所述模块打包工具当前项目的节点模块中;
在所述模块打包工具的配置文件的主模块中引入所述敏感词过滤插件。
开发人员在开发完成该敏感词过滤插件后,可以将该插件的程序包上传至某个指定的服务器。然后,可以在终端设备上输入指定的命令行语句,从该指定服务器获取该敏感词过滤插件的程序包。接着,将该程序包安装至模块打包工具当前项目的节点模块中,然后在模块打包工具的配置文件的主模块中引入该插件,从而完成将该插件引入模块打包工具的操作。
进一步的,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词,可以包括:
提取所述敏感词列表中的敏感词字符串;
为所述敏感词字符串拼接括弧符号;
以拼接括弧符号后的所述敏感词字符串作为参数构造正则表达式;
采用所述正则表达式对所述目标代码进行处理,以确定所述目标代码中是否具有与所述敏感词列表匹配的敏感词。
启动模块打包工具对目标代码进行打包,在这个过程中,执行该敏感词过滤插件,提取该敏感词列表中的敏感词字符串,为该字符串拼接括弧符号,作为构造正则表达式的参数。最后,采用构造的正则表达式对目标代码进行处理,以确定该目标代码中是否具有与所述敏感词列表匹配的敏感词。
更进一步的,提取所述敏感词列表中的敏感词字符串,可以包括:
若所述敏感词列表记录字符串格式的数据,则提取所述字符串格式的数据作为所述敏感词字符串;
若所述敏感词列表记录数组格式的数据,则采用竖线符号对所述数组格式的数据进行拼接,得到所述敏感词字符串。
在后续步骤中构造正则表达式时,需要设置的参数是一个字符串,因此若该敏感词列表中记录的敏感词本身就是一个字符串,就可以直接提取出该字符串,而若该敏感词列表中记录的敏感词具有多个,是一个数组,则需要采用竖线符号对该数组进行拼接,从而得到该敏感词字符串。
进一步的,在检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词之后,还可以包括:
若所述目标代码中具有与所述敏感词列表匹配的敏感词,则终止所述目标代码的打包操作,并输出所述目标代码中的敏感词信息。
该目标代码中具有敏感词,此时不能直接执行后续的代码发布流程,故终止该目标代码的打包操作,然后输出该目标代码中的敏感词信息。比如,可以将该目标代码中的敏感词信息(比如敏感词数量和位置等)发送至软件发布系统的控制台,开发人员在接收到该敏感词信息后,可以对目标代码进行修改,去除其中的敏感词。
更进一步的,输出所述目标代码中的敏感词信息,可以包括:
根据换行符对所述目标代码进行分割,得到目标数组;
将所述目标数组中的每个字符串分别与所述敏感词列表进行匹配,以检测所述目标数组中是否具有敏感词;
若所述目标数组中具有敏感词,则获取该敏感词处于所述目标代码中的位置;
根据该敏感词以及该敏感词处于所述目标代码中的位置,生成所述敏感词信息。
在检测到目标代码中具有敏感词之后,可以获取到该敏感词处于目标代码中的位置,生成对应的敏感词信息。软件开发人员通过该敏感词信息,可以获知目标代码中具有的各个敏感词以及每个敏感词的位置,便于对该目标代码进行修改。
进一步的,在将预先构建的敏感词过滤插件引入模块打包工具的配置文件中之后,启动所述模块打包工具对目标代码进行打包之前,还可以包括:
采用代码转换工具对所述目标代码进行语法转换,使得所述目标代码兼容各个指定的浏览器。
目前,开发人员为了提高开发效率,通常会使用ES6、ES7、ES8等Java Script高版本语法来开发代码。然而,有些浏览器并不能兼容这些高版本语法开发的代码,因此可以采用某些代码转换工具,比如Babel-loader对目标代码进行语法转换,使得处理后的目标代码能够兼容各个指定的浏览器。
第二方面,本申请实施例提供了一种打包代码的装置,包括:
插件引入模块,用于将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,所述敏感词过滤插件包含预配置的敏感词列表;
敏感词检测模块,用于在启动所述模块打包工具对目标代码进行打包的过程中,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词;
代码打包模块,用于若所述目标代码中没有与所述敏感词列表匹配的敏感词,则完成所述目标代码的打包操作。
第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例第一方面提出的打包代码的方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本申请实施例第一方面提出的打包代码的方法的步骤。
上述第二方面至第四方面所能实现的有益效果,可以参照上述第一方面的相关说明。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种打包代码的方法的第一个实施例的流程图;
图2是本申请实施例提供的一种打包代码的方法的第二个实施例的流程图;
图3是本申请实施例提供的一种打包代码的方法的第三个实施例的流程图;
图4是本申请实施例提供的一种打包代码的装置的一个实施例的结构图;
图5是本申请实施例提供的一种终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本申请提出一种打包代码的方法、装置、车载终端设备和存储介质,能够在前端打包代码的时候检测出代码中的敏感词,从而减少后续代码发布的时候扫描得到敏感词的概率,提高代码发布的成功率和效率。
本申请实施例提供的打包代码的方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、大屏电视等终端设备或者服务器上,本申请实施例对终端设备和服务器的具体类型不作任何限制。
请参阅图1,本申请实施例中一种打包代码的方法的第一个实施例包括:
101、将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,所述敏感词过滤插件包含预配置的敏感词列表;
首先,需要在终端设备上安装一个敏感词过滤插件,该敏感词过滤插件包含预配置的敏感词列表。例如,安装filter-loader(敏感词过滤插件名称),在该插件的options配置项中设置要过滤的敏感词列表,该列表主要包含words字段的敏感词,可以是字符串或者数组类型的敏感词。具体的,如果只有一项敏感词,则该敏感词为一个字符串;如果有多项敏感词,则这些敏感词组成一个数组。比如,敏感词列表只有一个敏感词,则设置words:‘敏感词1’;敏感词列表有多个敏感词,则设置words:[‘敏感词1’,‘敏感词2’,‘敏感词3’…],中括号[]表示数组。
本申请中模块打包工具可以是Webpack工具,Webpack工具是一个前端资源加载/打包工具,它根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。Webpack作为一个模块打包器,主要功能是在浏览器上打包javascript文件。为了实现在Webpack打包代码的过程中,使用该插件检测代码中的敏感词,需要将该插件引入Webpack的配置文件中。
进一步的,将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,可以包括:
(1)通过输入的指定命令行语句,从指定服务器获取预先上传的所述敏感词过滤插件的程序包;
(2)将获取的所述程序包安装至所述模块打包工具当前项目的节点模块中;
(3)在所述模块打包工具的配置文件的主模块中引入所述敏感词过滤插件。
对于上述步骤(1),开发人员在开发完成该敏感词过滤插件后,可以将该插件上传至某个指定的服务器存储。具体的,可以采用NPM服务器,NPM是随同NodeJS一起安装的包管理工具,能解决Node-JS代码部署上的很多问题,常见的使用场景有以下几种:允许用户从NPM服务器下载别人编写的第三方包到本地使用;允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用;允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。NPM由三个独立的部分组成:网站、注册表(registry)和命令行工具(CLI)。网站是开发者查找包(package)、设置参数以及管理NPM使用体验的主要途径;注册表是一个巨大的数据库,保存了每个包(package)的信息;CLI通过命令行,实现终端和NPM服务器之间的交互。具体的,可以在终端设备上输入指定的命令行语句,比如npm i filter-loader-D命令,从NPM服务器获取预先上传的敏感词过滤插件的程序包。
对于上述步骤(2)至(3),在获取到敏感词过滤插件的程序包后,将该程序包安装至模块打包工具当前项目的节点模块中;然后在该模块打包工具的配置文件的主模块中引入所述敏感词过滤插件。比如,可以将该程序包安装至Webpack工具当前项目的节点模块(node_module)中,然后在Webpack工具的webpack.config.js配置文件的主模块中引入该插件,从而完成将该插件引入Webpack的操作。
102、在启动所述模块打包工具对目标代码进行打包的过程中,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词;
接着,启动该模块打包工具对目标代码进行打包。比如对于Webpack工具来说,可以执行npm run build命令,启动打包操作。目标代码是待执行敏感词检测的代码,比如某个开发完成的源代码。在这个过程中,执行该敏感词过滤插件,以检测该目标代码中是否具有与该敏感词列表匹配的敏感词。模块打包工具在执行该敏感词过滤插件时,就会启动敏感词的匹配操作,此时会传入目标代码以及该插件的配置项,该配置项中包含敏感词列表。
进一步的,在将预先构建的敏感词过滤插件引入模块打包工具的配置文件中之后,启动所述模块打包工具对目标代码进行打包之前,还可以包括:
采用代码转换工具对所述目标代码进行语法转换,使得所述目标代码兼容各个指定的浏览器。
目前,开发人员为了提高开发效率,通常会使用ES6、ES7、ES8等Java Script高版本语法来开发代码。然而,有些浏览器并不能兼容这些高版本语法开发的代码,因此可以采用某些代码转换工具,比如Babel-loader工具对目标代码进行语法转换,使得处理后的目标代码能够兼容各个指定的浏览器。代码转换工具充当的作用就是将这些高级的语法转化成一般浏览器都能识别的语法,这样就可以在浏览器中正常访问代码。
103、若所述目标代码中没有与所述敏感词列表匹配的敏感词,则完成所述目标代码的打包操作。
若该目标代码中没有与该敏感词列表匹配的敏感词,则表示该目标代码不存在敏感词,此时可以直接完成该目标代码的打包操作,然后执行后续的代码发布流程。
本申请实施例将敏感词过滤插件引入模块打包工具,在采用模块打包工具打包代码的过程中,通过该敏感词过滤插件找出代码中具有的敏感词,并在确定代码中不含敏感词后才完成该代码的打包操作,能够在前端打包代码的时候检测出代码中的敏感词,从而减少后续代码发布的时候扫描得到敏感词的概率,提高代码发布的成功率和效率。
请参阅图2,本申请实施例中一种打包代码的方法的第二个实施例包括:
201、将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,所述敏感词过滤插件包含预配置的敏感词列表;
步骤201与步骤101相同,具体可以参照步骤101的相关说明。
202、在启动所述模块打包工具对目标代码进行打包的过程中,提取所述敏感词列表中的敏感词字符串;
接着,启动模块打包工具对目标代码进行打包,在这个过程中,执行该敏感词过滤插件,提取该敏感词列表中的敏感词字符串。
进一步的,提取所述敏感词列表中的敏感词字符串,可以包括:
(1)若所述敏感词列表记录字符串格式的数据,则提取所述字符串格式的数据作为所述敏感词字符串;
(2)若所述敏感词列表记录数组格式的数据,则采用竖线符号对所述数组格式的数据进行拼接,得到所述敏感词字符串。
在后续步骤中构造正则表达式时,需要设置的参数是一个字符串,因此若该敏感词列表中记录的敏感词本身就是一个字符串,就可以直接提取出该字符串,而若该敏感词列表中记录的敏感词具有多个,是一个数组,则需要采用竖线符号对该数组进行拼接,从而得到该敏感词字符串。例如,敏感词列表只有一个敏感词words:‘敏感词1’,则直接将‘敏感词1’作为敏感词字符串;敏感词列表记录数组words:[‘敏感词1’,‘敏感词2’,‘敏感词3’],则采用竖线符号“|”对数组中的数据进行拼接,得到字符串:‘敏感词1|敏感词2|敏感词3’。相关的处理指令为:(words=Array.isArray(words)?words.join('|'):words)。
203、为所述敏感词字符串拼接括弧符号;
在提取出敏感词字符串之后,为该字符串拼接括弧符号,作为构造正则表达式的参数。上述例子中,得到的敏感词字符串是‘敏感词1|敏感词2|敏感词3’,然后可以执行指令var reg=‘(’+words+‘)’,得到结果:reg=(‘敏感词1|敏感词2|敏感词3’)。
204、以拼接括弧符号后的所述敏感词字符串作为参数构造正则表达式;
然后,以拼接括弧符号后的所述敏感词字符串作为参数构造正则表达式。比如,可以构造一个RegExp函数对象,该函数的第一个参数(pattern参数)为该敏感词字符串。
RegExp对象表示正则表达式,它是对字符串执行模式匹配的强大工具。其语法为,new RegExp(pattern,attributes),其中,参数pattern是一个字符串,指定了正则表达式的模式或其他正则表达式;参数attributes是一个可选的字符串,包含属性"g"、"i"和"m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。以上述例子说明,可以构造RegExp对象new RegExp((‘敏感词1|敏感词2|敏感词3’),gi),表示只要待测文本(目标代码)匹配到“敏感词1”、“敏感词2”或者“敏感词3”则表示匹配成功,而gi表示全局匹配且忽略大小写进行匹配。
205、采用所述正则表达式对所述目标代码进行处理,以确定所述目标代码中是否具有与所述敏感词列表匹配的敏感词;
接着,采用该正则表达式对目标代码进行处理,从而确定该目标代码中是否具有与该敏感词列表匹配的敏感词。以RegExp函数对象为例,该正则表达式会将目标代码中的各个字符串和pattern参数中的字符串(即该敏感词字符串)进行匹配,从而找出目标代码中具有的各个敏感词(即匹配成功的字符串)。结果可以通过验证reg.test(source)获取,若其返回值是true,则表示存在敏感词,reg.test(source)是一个正则匹配验证,用来验证是否存在敏感词。
206、若所述目标代码中没有与所述敏感词列表匹配的敏感词,则完成所述目标代码的打包操作。
若该目标代码中没有与该敏感词列表匹配的敏感词,则表示该目标代码不存在敏感词,此时可以直接完成该目标代码的打包操作,然后执行后续的代码发布流程。
本申请实施例将敏感词过滤插件引入模块打包工具,在采用模块打包工具打包代码的过程中,提取敏感词列表中的敏感词字符串;为所述敏感词字符串拼接括弧符号;以拼接括弧符号后的所述敏感词字符串作为参数构造正则表达式;采用所述正则表达式对所述目标代码进行处理,以确定所述目标代码中是否具有与所述敏感词列表匹配的敏感词;若所述目标代码中没有与所述敏感词列表匹配的敏感词,则完成所述目标代码的打包操作。与本申请的第一个实施例相比,本实施例提出一种执行敏感词过滤插件,以检测目标代码中是否具有与敏感词列表匹配的敏感词的具体实施方式。
请参阅图3,本申请实施例中一种打包代码的方法的第三个实施例包括:
301、将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,所述敏感词过滤插件包含预配置的敏感词列表;
302、在启动所述模块打包工具对目标代码进行打包的过程中,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词;
步骤301-302与步骤101-102相同,具体可以参照步骤101-102的相关说明。
若所述目标代码中没有与所述敏感词列表匹配的敏感词,则执行步骤303;若所述目标代码中具有与所述敏感词列表匹配的敏感词,则执行步骤304。
303、完成所述目标代码的打包操作;
该目标代码中没有与该敏感词列表匹配的敏感词,此时可以直接完成该目标代码的打包操作。
304、终止所述目标代码的打包操作,并输出所述目标代码中的敏感词信息。
该目标代码中具有敏感词,此时不能直接执行后续的代码发布流程,故终止该目标代码的打包操作,然后输出该目标代码中的敏感词信息。比如,可以将该目标代码中的敏感词信息(比如敏感词数量和位置等)发送至软件发布系统的控制台,开发人员在接收到该敏感词信息后,可以对目标代码进行修改,去除其中的敏感词。然后,返回步骤302,重新检测目标代码中是否仍然存在敏感词,直至获得没有敏感词的目标代码。
具体的,所述输出所述目标代码中的敏感词信息,可以包括:
(1)根据换行符对所述目标代码进行分割,得到目标数组;
(2)将所述目标数组中的每个字符串分别与所述敏感词列表进行匹配,以检测所述目标数组中是否具有敏感词;
(3)若所述目标数组中具有敏感词,则获取该敏感词处于所述目标代码中的位置;
(4)根据该敏感词以及该敏感词处于所述目标代码中的位置,生成所述敏感词信息。
对于上述步骤(1)至(4),举例说明如下:
假设目标代码为以下js代码,其中字符串“zpd”为敏感词列表中的敏感词:
123456789
dsfs zpd dfsd
fsdfdfsfsf
该js代码的源码是按换行符\n进行拼接的一个字符串,即var source=‘123456789\ndsfs zpd dfsd\nfsdfdfsfsf’,所以需要以换行符\n进行分割获取到一个目标数组,即执行命令var arr=source.split(‘\n’),得到的目标数组arr值如下:
arr=[
‘123456789’,
‘dsfs zpd dfsd’,
‘fsdfdfsfsf
]
然后,将该目标数组中的每一个字符串和所述敏感词列表进行匹配,找出该目标数组中的敏感词。另外,目标数组中的每一项都代表一行,第几项就代表第几行。如果目标数组中存在敏感词,则可以通过正则表达式的match方法获取到敏感词,然后通过js的indexOf方法获取该敏感词在该行中的位置,也即敏感词在目标代码中的位置。在JS中,indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置。比如,在上述例子中,会检测出目标代码中具有敏感词“zpd”,以及“zpd”在目标代码中所处的位置。最后,根据检测到的敏感词以及敏感词的位置生成敏感词信息,以指示该目标代码中具有的各个敏感词以及每个敏感词的位置,便于相关人员对该目标代码进行修改。
本申请实施例将敏感词过滤插件引入模块打包工具,在采用模块打包工具打包代码的过程中,通过该敏感词过滤插件找出代码中具有的敏感词,并在确定代码中不含敏感词后才完成该代码的打包操作。另外,当检测到代码中具有敏感词之后,会终止代码的打包操作,并输出代码中的敏感词信息,以便开发人员对代码进行修改,去除其中的敏感词。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
目前,市面上还未有针对前端敏感词过滤的Webpack插件,如果前端部分的代码,未进行扫描,直接发布至生产,很容易出现敏感词问题。而通过信息安全扫描虽然能够扫描到代码中具有敏感词,但此时需要重新执行软件发布流程,十分费时费力。本申请针对这个问题,将敏感词过滤插件引入Webpack等模块打包工具,在采用模块打包工具打包代码的过程中,能够通过该敏感词过滤插件找出代码中具有的敏感词,并在确定代码中不含敏感词后才完成该代码的打包操作,从而减少后续代码发布的时候扫描得到敏感词的概率,提高代码发布的成功率和效率。
对应于上文实施例所述的打包代码的方法,图4示出了本申请实施例提供的一种打包代码的装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图4,该装置包括:
插件引入模块401,用于将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,所述敏感词过滤插件包含预配置的敏感词列表;
敏感词检测模块402,用于在启动所述模块打包工具对目标代码进行打包的过程中,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词;
代码打包模块403,用于若所述目标代码中没有与所述敏感词列表匹配的敏感词,则完成所述目标代码的打包操作。
进一步的,所述插件引入模块可以包括:
程序包获取单元,用于通过输入的指定命令行语句,从指定服务器获取预先上传的所述敏感词过滤插件的程序包;
程序包安装单元,用于将获取的所述程序包安装至所述模块打包工具当前项目的节点模块中;
插件引入单元,用于在所述模块打包工具的配置文件的主模块中引入所述敏感词过滤插件。
进一步的,所述敏感词检测模块可以包括:
敏感词字符串提取单元,用于提取所述敏感词列表中的敏感词字符串;
括弧拼接单元,用于为所述敏感词字符串拼接括弧符号;
正则表达式构造单元,用于以拼接括弧符号后的所述敏感词字符串作为参数构造正则表达式;
代码处理单元,用于采用所述正则表达式对所述目标代码进行处理,以确定所述目标代码中是否具有与所述敏感词列表匹配的敏感词。
进一步的,所述敏感词字符串提取单元可以包括:
字符串提取子单元,用于若所述敏感词列表记录字符串格式的数据,则提取所述字符串格式的数据作为所述敏感词字符串;
数组拼接子单元,用于若所述敏感词列表记录数组格式的数据,则采用竖线符号对所述数组格式的数据进行拼接,得到所述敏感词字符串。
进一步的,所述打包代码的装置还可以包括:
打包终止模块,用于若所述目标代码中具有与所述敏感词列表匹配的敏感词,则终止所述目标代码的打包操作,并输出所述目标代码中的敏感词信息。
更进一步的,所述打包终止模块可以包括:
代码分割单元,用于根据换行符对所述目标代码进行分割,得到目标数组;
敏感词匹配单元,用于将所述目标数组中的每个字符串分别与所述敏感词列表进行匹配,以检测所述目标数组中是否具有敏感词;
敏感词位置获取单元,用于若所述目标数组中具有敏感词,则获取该敏感词处于所述目标代码中的位置;
敏感词信息生成单元,用于根据该敏感词以及该敏感词处于所述目标代码中的位置,生成所述敏感词信息。
进一步的,所述打包代码的装置还可以包括:
代码转换模块,用于采用代码转换工具对所述目标代码进行语法转换,使得所述目标代码兼容各个指定的浏览器。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如图1至图3表示的任意一种打包代码的方法的步骤。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品在服务器上运行时,使得服务器执行实现如图1至图3表示的任意一种打包代码的方法的步骤。
图5是本申请一实施例提供的终端设备的示意图。如图5所示,该实施例的终端设备5包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机可读指令52。所述处理器50执行所述计算机可读指令52时实现上述各个打包代码的方法实施例中的步骤,例如图1所示的步骤101至103。或者,所述处理器50执行所述计算机可读指令52时实现上述各装置实施例中各模块/单元的功能,例如图4所示模块401至403的功能。
示例性的,所述计算机可读指令52可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机可读指令52在所述终端设备5中的执行过程。
所述终端设备5可以是智能手机、笔记本、掌上电脑及云端终端设备等计算设备。所述终端设备5可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是终端设备5的示例,并不构成对终端设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备5还可以包括输入输出设备、网络接入设备、总线等。
所述处理器50可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(AppLication Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieLd-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述终端设备5的内部存储单元,例如终端设备5的硬盘或内存。所述存储器51也可以是所述终端设备5的外部存储设备,例如所述终端设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器51还可以既包括所述终端设备5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机可读指令以及所述终端设备所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种打包代码的方法,其特征在于,包括:
将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,所述敏感词过滤插件包含预配置的敏感词列表;
在启动所述模块打包工具对目标代码进行打包的过程中,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词;
若所述目标代码中没有与所述敏感词列表匹配的敏感词,则完成所述目标代码的打包操作。
2.如权利要求1所述的方法,其特征在于,将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,包括:
通过输入的指定命令行语句,从指定服务器获取预先上传的所述敏感词过滤插件的程序包;
将获取的所述程序包安装至所述模块打包工具当前项目的节点模块中;
在所述模块打包工具的配置文件的主模块中引入所述敏感词过滤插件。
3.如权利要求1所述的方法,其特征在于,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词,包括:
提取所述敏感词列表中的敏感词字符串;
为所述敏感词字符串拼接括弧符号;
以拼接括弧符号后的所述敏感词字符串作为参数构造正则表达式;
采用所述正则表达式对所述目标代码进行处理,以确定所述目标代码中是否具有与所述敏感词列表匹配的敏感词。
4.如权利要求3所述的方法,其特征在于,提取所述敏感词列表中的敏感词字符串,包括:
若所述敏感词列表记录字符串格式的数据,则提取所述字符串格式的数据作为所述敏感词字符串;
若所述敏感词列表记录数组格式的数据,则采用竖线符号对所述数组格式的数据进行拼接,得到所述敏感词字符串。
5.如权利要求1所述的方法,其特征在于,在检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词之后,还包括:
若所述目标代码中具有与所述敏感词列表匹配的敏感词,则终止所述目标代码的打包操作,并输出所述目标代码中的敏感词信息。
6.如权利要求5所述的方法,其特征在于,所述输出所述目标代码中的敏感词信息,包括:
根据换行符对所述目标代码进行分割,得到目标数组;
将所述目标数组中的每个字符串分别与所述敏感词列表进行匹配,以检测所述目标数组中是否具有敏感词;
若所述目标数组中具有敏感词,则获取该敏感词处于所述目标代码中的位置;
根据该敏感词以及该敏感词处于所述目标代码中的位置,生成所述敏感词信息。
7.如权利要求1至6任一项所述的方法,其特征在于,在将预先构建的敏感词过滤插件引入模块打包工具的配置文件中之后,启动所述模块打包工具对目标代码进行打包之前,还包括:
采用代码转换工具对所述目标代码进行语法转换,使得所述目标代码兼容各个指定的浏览器。
8.一种打包代码的装置,其特征在于,包括:
插件引入模块,用于将预先构建的敏感词过滤插件引入模块打包工具的配置文件中,所述敏感词过滤插件包含预配置的敏感词列表;
敏感词检测模块,用于在启动所述模块打包工具对目标代码进行打包的过程中,执行所述敏感词过滤插件,以检测所述目标代码中是否具有与所述敏感词列表匹配的敏感词;
代码打包模块,用于若所述目标代码中没有与所述敏感词列表匹配的敏感词,则完成所述目标代码的打包操作。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的打包代码的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的打包代码的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010995066.4A CN112114870A (zh) | 2020-09-21 | 2020-09-21 | 一种打包代码的方法、装置、终端设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010995066.4A CN112114870A (zh) | 2020-09-21 | 2020-09-21 | 一种打包代码的方法、装置、终端设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112114870A true CN112114870A (zh) | 2020-12-22 |
Family
ID=73800824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010995066.4A Pending CN112114870A (zh) | 2020-09-21 | 2020-09-21 | 一种打包代码的方法、装置、终端设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112114870A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613074A (zh) * | 2020-12-30 | 2021-04-06 | 绿盟科技集团股份有限公司 | 一种敏感文件识别方法、装置、设备及介质 |
-
2020
- 2020-09-21 CN CN202010995066.4A patent/CN112114870A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613074A (zh) * | 2020-12-30 | 2021-04-06 | 绿盟科技集团股份有限公司 | 一种敏感文件识别方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110968325B (zh) | 一种小程序转换方法及装置 | |
CN111443921A (zh) | web前端项目的分包部署方法、系统和计算机设备 | |
EP3499364B1 (en) | Method and device for loading kernel module | |
CN111143087B (zh) | 一种接口调用方法、装置、存储介质和服务器 | |
CN111680253B (zh) | 页面应用数据包生成方法、装置、计算机设备及存储介质 | |
CN113961919B (zh) | 恶意软件检测方法和装置 | |
CN112559354A (zh) | 前端代码规范检测方法、装置、计算机设备及存储介质 | |
CN112631649A (zh) | 智能合约管理方法、装置、终端设备及介质 | |
CN111124480A (zh) | 应用程序包的生成方法、装置、电子设备及存储介质 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN114035827A (zh) | 应用程序更新方法、装置、设备及存储介质 | |
CN110765067A (zh) | 数据处理方法及装置 | |
CN112463256A (zh) | 确定配置文件的方法、系统、电子设备及存储介质 | |
CN113268245A (zh) | 代码分析方法、装置及存储介质 | |
CN114895935A (zh) | 刷写车辆ecu的方法、装置、电子设备及存储介质 | |
CN109828759B (zh) | 代码编译方法、装置、计算机装置及存储介质 | |
CN112114870A (zh) | 一种打包代码的方法、装置、终端设备和存储介质 | |
CN110795646A (zh) | 请求处理方法、装置、电子设备和计算机可读存储介质 | |
CN116361793A (zh) | 代码检测方法、装置、电子设备及存储介质 | |
CN113239328B (zh) | 一种业务功能获取方法、装置、电子设备和存储介质 | |
CN113703753B (zh) | 用于产品开发的方法、装置和产品开发系统 | |
CN110968500A (zh) | 一种测试用例的执行方法及装置 | |
CN114816816A (zh) | 崩溃堆栈信息处理方法、装置、设备及存储介质 | |
CN113467815A (zh) | 热更新的应用修复方法、装置、终端设备及存储介质 | |
CN110147671A (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 |