CN114969679A - Web前端安全加固的方法、电子设备和介质 - Google Patents

Web前端安全加固的方法、电子设备和介质 Download PDF

Info

Publication number
CN114969679A
CN114969679A CN202210514254.XA CN202210514254A CN114969679A CN 114969679 A CN114969679 A CN 114969679A CN 202210514254 A CN202210514254 A CN 202210514254A CN 114969679 A CN114969679 A CN 114969679A
Authority
CN
China
Prior art keywords
code
scheme
stage
web front
algorithm
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
Application number
CN202210514254.XA
Other languages
English (en)
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.)
Shanghai Suanya Information Technology Co ltd
Original Assignee
Shanghai Suanya Information Technology 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 Shanghai Suanya Information Technology Co ltd filed Critical Shanghai Suanya Information Technology Co ltd
Priority to CN202210514254.XA priority Critical patent/CN114969679A/zh
Publication of CN114969679A publication Critical patent/CN114969679A/zh
Pending legal-status Critical Current

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1066Hiding content

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种Web前端安全加固的方法、电子设备及存储介质。其中Web前端安全加固的方法,包括以下步骤:读取客户端Web源代码进行预处理,然后注入防护代码逻辑,再通过AST技术转化进行可自定义的代码混淆,最后进一步进行控制流混淆后输出。本发明通过动态与静态的多重防护方案的自由搭配,可以让客户自定义客户端的代码防护组合,在保证前端代码自身的安全性的同时,按时向服务端反馈数据进行校验,进一步降低代码被破坏的可能性。

Description

Web前端安全加固的方法、电子设备和介质
技术领域
本发明涉及代码保密领域,尤其涉及一种Web前端安全加固的方法、电子设备和介质。
背景技术
当前Web(万维网)的应用下,用户登录、注册、下单、支付等场景需要安全的Web前端运行环境。作为Web前端的主流编程语言JavaScript的安全性成为关键环节,而JavaScript脚本以源码明文形式传输执行,重要的应用源代码是开源的,如此,在Web前端攻防体系中,单一的代码混淆方式被解混淆的危险性不断增加,一旦前端数据的代码逻辑直接暴露,恶意请求很容易伪造数据来逃过检测,进行攻击,造成难以预计的损失。
发明内容
本发明要解决的技术问题是为了克服现有技术中Web前端安全加固防护强度不够的缺陷,提供一种基于JavaScript代码混淆,尤其是更高防护级别的控制流混淆的应用,同时具备反调试、防注入、环境检测等能力的保护方案。
本发明是通过下述技术方案来解决上述技术问题:
一种Web前端安全加固的方法,包括:
S1、读取客户端Web前端源代码并进行预处理获得一阶段代码;
S2、对所述一阶段代码进行防护代码逻辑的注入得到二阶段代码;
S3、将所述二阶段代码通过AST技术转化为三阶段代码;
S4、自所述三阶段代码分析提取代码块,对各所述代码块通过代码混淆方案转化为四阶段代码;
S5、对所述四阶段代码的代码块进行控制流混淆后输出为最终代码。
较佳地,步骤S2包括:
根据访问者生成浏览器指纹并收集所述访问者的环境变量;
根据预设加密算法将所述浏览器指纹和所述访问者的环境变量进行算法加密,获得加密数据包;
在所述二阶段代码中插入代码数字签名算法和回传算法;
较佳地,所述对各代码块通过代码混淆方案转化为四阶段代码具体包括:
获取客户端指令;
根据所述客户端指令选取一种混淆方案或多种混淆方案的组合;
将所选方案或方案组合插入三阶段代码中转化为四阶段代码。
较佳地,步骤S5包括:
控制流平展,在四阶段代码中插入乱序算法;
根据所述乱序算法改变“switch-case”结构中“case”取值从而控制代码基本块的运行顺序;
判断所述代码块类型是否为基本代码块;
若是,随机在基本代码块之后插入不透明谓词;
若否,对非基本代码块插入跳转逻辑进行混淆;
所述非基本代码块包括if基本块、while基本块、for基本块、do-while基本块、switch基本块。
较佳地,所述输出为最终代码可进行压缩操作进一步优化代码后再输出。
较佳地,所述预设加密算法具体可用国标加密算法或Base64算法。
较佳地,所述混淆方案至少包括方案1、方案2、方案3、方案4、方案5五种选择方案;
所述方案1为在代码块之间随机插入冗余代码;
所述方案2为将三阶段代码中的标识符名称,替换为随机名称;
所述方案3为将三阶段代码以字符串的形式利用加密算法进行加密,以将所述字符串转化成字符乱码,并在三阶段代码中嵌入解密模块,以使得客户端解除加密算法正确运行代码;
所述方案4为对三阶段代码语法进行精简代码操作;
所述方案5为三阶段代码整体插入反调试逻辑。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述计算机程序时实现本发明的Web前端安全加固的方法。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明的Web前端安全加固的方法。
本发明的积极进步效果在于:本发明兼顾静态和动态保护的同时有着良好的兼容性兼顾Web前端全平台;多层嵌套设计的控制流混淆,兼顾应用运行性能;此外,用户操作便捷,多重方案组合,全流程形成闭环,保密性更强,代码的防护能力大幅提高。
附图说明
图1为本发明的实施例1的Web前端安全加固的方法流程图。
图2为本发明的实施例1的Web前端安全加固的方法步骤102的流程图。
图3为本发明的实施例1的Web前端安全加固的方法步骤1052的流程图。
图4为本发明的实施例2的电子设备的结构示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
本实施例提供一种Web前端安全加固的方法。参照图1,Web前端安全加固的方法步骤包括:
步骤101、读取客户端Web前端源代码并进行预处理获得一阶段代码。
步骤102、对一阶段代码进行防护代码逻辑的注入得到二阶段代码。
具体实施时,参照图2,步骤102包括以下步骤:
步骤1021、根据访问者生成浏览器指纹,例如Font、GPU、Audio指纹。
步骤1022、收集访问者的环境变量,例如浏览器user agent。
此步骤原理:服务器端可以将浏览器指纹和环境变量用于检测访问者的浏览环境,识别人机行为。
步骤1023、将浏览器指纹和环境变量的数据进行算法加密,获得加密数据包。具体实施时,可以用国标加密算法或Base64算法加密。
此步骤原理:防止浏览器指纹和环境变量的数据在传输至服务器端的过程中被篡改。
步骤1024、在二阶段代码中插入代码数字签名算法和回传算法。
所述数字签名算法用于在最终代码运行时进行代码签名。
所述回传算法用于在最终代码运行时截取代码签名的片段,并任意截取最终代码的片段,将加密数据包、数字签名片段和最终代码片段自动发回服务端用以校验。
步骤103、将二阶段代码通过AST技术转化为三阶段代码,三阶段代码包含抽象语法树(Json)对象。
步骤104、在Json对象中以函数为单位,分析提取代码块,对各代码块通过代码混淆方案转化为四阶段代码。
具体实施时,有五种代码混淆方案可自定义选择:
方案1、在代码块之间随机插入冗余代码。
方案2、将三阶段代码中的标识符名称,如变量名、函数名,替换为随机名称。
方案3、将三阶段代码以字符串的形式利用加密算法进行加密,字符串转化成字符乱码,并在三阶段代码中嵌入解密模块,以使得客户端解除加密算法正确运行代码。
方案4、对三阶段代码语法进行精简代码操作,多行代码转成一行,条件代码块转成一行。
方案5、为三阶段代码整体插入反调试逻辑。
步骤105、对四阶段代码的代码块进行多层嵌套设计的控制流混淆,得到最终代码。
具体实施时,参照图3,步骤105包括以下步骤:
步骤1051、控制流平展,在代码逻辑的开头插入乱序算法,该算法可以在不改变原有代码块的原始运行逻辑的前提下,改变“switch-case”结构中“case”取值从而控制代码基本块的运行顺序。
此步骤原理:控制流的平展化法主要是改变控制流的立体机构,根据条件分支将循环、嵌套条件分支等代码分成一个个代码基本块,把控制流中的各个基本块全部放到“switch”语句中,利用循环和“switch”结构将控制流的程序结构扁平化,利用“case”的取值变化来控制基本块的运行顺序,使得代码控制流程复杂化,无法静态分析,动态调试也有相当大的难度,阻碍对代码的分析理解,从而保护代码不被分析修改。
步骤1052、判断代码块类型,将代码块区分为不具有跳转逻辑即单分支直接顺序执行的基本代码块和具有跳转逻辑的非基本代码块。
此处非基本代码块具体为if代码块、while代码块、for代码块、do-while代码块、switch代码块。注意分辨,此处的基本与非基本的判断依据是是否有跳转逻辑,例如if代码块若只是单分支顺序执行则仍然是基本代码块。
步骤1053、随机在基本代码块之后插入不透明谓词。插入位置不包含除整体代码逻辑的尾部,且限定上限为5处,使得代码的运行效率也得到保证。
此步骤原理:不透明谓词法通过构造一些恒真或恒假的条件,这些条件静态分析时无法推断对错,从而无法确定四阶段代码的原始运行逻辑,只能在运行时确定,以此增加静态程序分支,改造四阶段代码控制流。
步骤1054、对于非基本代码块,对不同种类的循环插入能实现符合其自身对应运行规则的跳转逻辑进行混淆。
步骤106、整理最终代码并压缩输出。
本实施例的Web前端安全加固的方法能够经过注入防护逻辑和代码混淆,尤其是更高防护级别的控制流混淆的应用,从而增强Web前端安全加固防护的强度。
实施例2
本实施例提供一种电子设备,电子设备可以通过计算设备的形式表现(例如可以为服务器设备),包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中处理器执行计算机程序时可以实现实施例1提供的Web前端安全加固的方法。
图4示出了本实施例的硬件结构示意图,如图4所示,电子设备9具体包括:
至少一个处理器91、至少一个存储器92以及用于连接不同系统组件(包括处理器91和存储器92)的总线93,其中:
总线93包括数据总线、地址总线和控制总线。
存储器92包括易失性存储器,例如随机存取存储器(RAM)921和/或高速缓存存储器922,还可以进一步包括只读存储器(ROM)923。
存储器92还包括具有一组(至少一个)程序模块924的程序/实用工具925,这样的程序模块924包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
处理器91通过运行存储在存储器92中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1所提供的Web前端安全加固的方法。
电子设备9进一步可以与一个或多个外部设备94(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口95进行。并且,电子设备9还可以通过网络适配器96与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器96通过总线93与电子设备9的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备9使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
实施例3
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现实施例1的Web前端安全加固的方法的步骤。
其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现实施例1的Web前端安全加固的方法的步骤。
其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

Claims (9)

1.一种Web前端安全加固的方法,其特征在于,包括以下步骤:
S1、读取客户端Web前端源代码并进行预处理获得一阶段代码;
S2、对所述一阶段代码进行防护代码逻辑的注入得到二阶段代码;
S3、将所述二阶段代码通过AST技术转化为三阶段代码;
S4、自所述三阶段代码分析提取代码块,对各所述代码块通过代码混淆方案转化为四阶段代码;
S5、对所述四阶段代码的代码块进行控制流混淆后输出为最终代码。
2.如权利要求1所述的Web前端安全加固的方法,其特征在于,步骤S2包括:
根据访问者生成浏览器指纹并收集所述访问者的环境变量;
根据预设加密算法将所述浏览器指纹和所述访问者的环境变量进行算法加密,获得加密数据包;
在所述二阶段代码中插入代码数字签名算法和回传算法。
3.如权利要求1所述的Web前端安全加固的方法,其特征在于,所述对各所述代码块通过代码混淆方案转化为四阶段代码具体包括:
获取客户端指令;
根据所述客户端指令选取一种混淆方案或多种混淆方案的组合;
将所选方案或方案组合插入三阶段代码中转化为四阶段代码。
4.如权利要求1所述的Web前端安全加固的方法,其特征在于,步骤S5包括:
控制流平展,在四阶段代码中插入乱序算法;
根据所述乱序算法改变“switch-case”结构中“case”取值从而控制代码基本块的运行顺序;
判断所述代码块类型是否为基本代码块;
若是,随机在基本代码块之后插入不透明谓词;
若否,对非基本代码块插入跳转逻辑进行混淆;
所述非基本代码块包括if基本块、while基本块、for基本块、do-while基本块、switch基本块。
5.如权利要求1所述的Web前端安全加固的方法,其特征在于,所述最终代码可进行压缩操作进一步优化后再输出。
6.如权利要求2所述的Web前端安全加固的方法,其特征在于,所述预设加密算法具体可用国标加密算法或Base64算法。
7.如权利要求3所述的Web前端安全加固的方法,其特征在于,所述混淆方案至少包括方案1、方案2、方案3、方案4、方案5五种选择方案;
所述方案1为在代码块之间随机插入冗余代码;
所述方案2为将三阶段代码中的标识符名称,替换为随机名称;
所述方案3为将三阶段代码以字符串的形式利用加密算法进行加密,以将所述字符串转化成字符乱码,并在三阶段代码中嵌入解密模块,以使得客户端解除加密算法正确运行代码;
所述方案4为对三阶段代码语法进行精简代码操作;
所述方案5为三阶段代码整体插入反调试逻辑。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7中任一项所述的Web前端安全加固的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的Web前端安全加固的方法。
CN202210514254.XA 2022-05-11 2022-05-11 Web前端安全加固的方法、电子设备和介质 Pending CN114969679A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210514254.XA CN114969679A (zh) 2022-05-11 2022-05-11 Web前端安全加固的方法、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210514254.XA CN114969679A (zh) 2022-05-11 2022-05-11 Web前端安全加固的方法、电子设备和介质

Publications (1)

Publication Number Publication Date
CN114969679A true CN114969679A (zh) 2022-08-30

Family

ID=82980847

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210514254.XA Pending CN114969679A (zh) 2022-05-11 2022-05-11 Web前端安全加固的方法、电子设备和介质

Country Status (1)

Country Link
CN (1) CN114969679A (zh)

Similar Documents

Publication Publication Date Title
CN101356535B (zh) 一种检测和防止java脚本程序中不安全行为的方法和装置
CN106126981B (zh) 基于虚拟函数表替换的软件安全防护方法
CN105683990B (zh) 用于保护动态库的方法和装置
JP5409620B2 (ja) セキュアサーバサイドスクリプティングのためのドメイン固有言語抽象化
CN106326694A (zh) 一种基于C源代码的混淆的Android应用加固方法
US9892661B2 (en) Steganographic embedding of hidden payload
CN110196718B (zh) 脚本混淆方法
CN112597454A (zh) 代码混淆方法、代码运行方法、装置、介质与设备
CN103177199A (zh) 网页应用代码保护方法及系统和执行的提速方法及系统
CN110309631B (zh) 一种编程语言结构混淆处理方法、智能终端及存储介质
CN103577323A (zh) 基于动态关键指令序列胎记的软件抄袭检测方法
CN113312108A (zh) Swift报文的校验方法、装置、电子设备及存储介质
Gupta et al. A client‐server JavaScript code rewriting‐based framework to detect the XSS worms from online social network
Leithner et al. Hydra: Feedback-driven black-box exploitation of injection vulnerabilities
CN113779578B (zh) 移动端应用的智能混淆方法和系统
US20070130620A1 (en) Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value
Hamadouche et al. Virus in a smart card: Myth or reality?
Abaimov et al. A survey on the application of deep learning for code injection detection
CN114969679A (zh) Web前端安全加固的方法、电子设备和介质
CN114491424B (zh) 基于模糊测试的二进制代码裁剪方法
CN109165509A (zh) 软件实时可信度量的方法、设备、系统及存储介质
CN115774865A (zh) 前端代码的运行方法及其装置、电子设备及存储介质
CN114637988A (zh) 一种面向二进制的函数级软件随机化方法
Rietz et al. Firewalls for the Web 2.0
CN109218284B (zh) Xss漏洞检测方法及装置、计算机设备及可读介质

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