CN111581641B - 一种基于Hook的轻量级WebAPI保护方法和装置 - Google Patents
一种基于Hook的轻量级WebAPI保护方法和装置 Download PDFInfo
- Publication number
- CN111581641B CN111581641B CN202010256900.8A CN202010256900A CN111581641B CN 111581641 B CN111581641 B CN 111581641B CN 202010256900 A CN202010256900 A CN 202010256900A CN 111581641 B CN111581641 B CN 111581641B
- Authority
- CN
- China
- Prior art keywords
- web
- code
- protection
- api
- web api
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种基于Hook的轻量级WebAPI保护方法和装置。该方法将欲保护的Web API用保护代码替换,用以拦截所有对于指定Web API的访问和调用;并且,额外替换特定的Web API,用以防止攻击者绕过所述保护代码。该装置包括Web API替换模块和额外替换模块。本发明通过替换欲保护的API和一些额外关键Web API,可以较低的开销为Web API提供全面的保护,该方案中还采取了措施防止恶意绕过,从而可以实现程序调试、性能优化、保护软件系统中的关键API等目标。
Description
技术领域
本发明涉及一种基于Hook的轻量级Web API保护方法和装置,属于计算机应用技术领域。
背景技术
在软件调试、恶意代码检测领域,Hook技术在计算机编程领域中常被用于程序调试、性能优化、保护软件系统中的关键API。一般地说,Hook指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或拓展应用程序行为的各种技术。而处理被拦截的函数调用、事件、消息的用户自定义代码,被称为Hook(钩子)。而Web API则是在使用JavaScript编写Web代码时为实现程序功能可以调用的应用程序接口(Application ProgrammingInterface,API)。一个典型的例子是,当程序编写者使用JavaScript播放一段音频时就需要通过Web API进行。
在本发明中,主要考虑通过Hook技术拦截JavaScript代码对Web API的函数调用、属性访问及属性修改。受限于JavaScript的高度灵活性和宿主系统的多样性(浏览器和node.js等),目前JavaScript平台上还没有完整的、低开销的Web API保护方案。目前已有的防护方案主要是通过代码改写机制来完成,但是这类方案的主要问题在于额外开销过大,无法满足性能要求。这是因为JavaScript本身是动态类型的语言,并且存在动态执行代码的机制(例如eval函数可以把字符串当成JavaScript代码执行)。对于JavaScript不存在高效的静态代码分析手段,所以此类方案需要改写所有函数调用、属性访问相关的代码以保护Web API。而现代网站中一般大量应用JavaScript以实现业务逻辑,所以此类方案难以达到令人满意的性能表现。
发明内容
针对上述问题,本发明提供了一种基于Hook的轻量级Web API保护方法。利用JavaScript的对象机制,使用自定义的函数替换关键JavaScript API,从而可以实现完整的、轻量级的Web API保护方法,以达成代码测量、系统优化、保护软件系统安全等目标。
为了实现上述目的,本发明采用以下技术方案:
一种基于Hook的轻量级Web API保护方法,包括以下步骤:
将欲保护的Web API用保护代码替换,用以拦截所有对于指定Web API的访问和调用;
额外替换特定的Web API,用以防止攻击者绕过所述保护代码。
进一步地,所述保护代码的实现位置是在网页源代码的最前,以此保证保护代码先于所有其他代码执行。
进一步地,对于类型为text/javascript的源代码,所述保护代码直接以纯文本的形式插入;对于类型为text/html的源代码,所述保护代码被<script>标签包裹后插入至源代码最前。
进一步地,所述保护代码被包裹在函数闭包内。
进一步地,当修改的Web API为顶层对象的属性时,保护代码通过变量赋值方式覆盖原有对象实现。
进一步地,当修改的Web API属于HTMLElement及其子类的属性时,通过Object.defineProperty修改原有API,将其替换为保护代码,并将保护机制应用于HTMLElement及其子类的所有实例。
进一步地,所述额外替换特定的Web API中,特定的Web API包括Web Worker、Iframe。
进一步地,替换Web Worker的步骤包括:
构造一个新的对象以替换原有的Web Worker对象;
Web Worker在构造时接收两个参数:对于aURL参数,使用同步的XMLHttpRequest以获取原本会被传入Web Worker执行的源代码,在头部加入保护代码后,再传入createObjectURL处理生成URL,最后将生成的URL传入包裹的Web Worker;对于options参数,则直接传入包裹的Web Worker。
进一步地,对Iframe的部分属性进行保护,所述部分属性包括contentWindow,src,srcDoc。
一种基于Hook的轻量级Web API保护装置,其包括:
Web API替换模块,用于将欲保护的Web API用保护代码替换,用以拦截所有对于指定Web API的访问和调用;
额外替换模块,用于额外替换特定的Web API,用以防止攻击者绕过所述保护代码。
一种电子装置,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法的指令。
一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明的方法。
本发明的有益效果如下:
本发明通过替换欲保护的API和一些额外关键Web API,可以较低的开销为WebAPI提供全面的保护。方案中还采取了措施防止恶意绕过,从而可以实现程序调试、性能优化、保护软件系统中的关键API等目标。
附图说明
图1是本发明的基于Hook的轻量级Web API保护方法的步骤流程图。
图2是本发明的基于Hook的轻量级Web API保护装置的模块组成图。
具体实施方式
下面结合实施例和附图进一步阐述本发明所述的技术方案。
本实施例的基于Hook的轻量级Web API保护方法的具体实现语言为JavaScript,运行环境为浏览器、node.js等可以执行JavaScript的场景。如图1所示,主要包括以下两个步骤:
1)将欲保护的API用保护代码替换。该步骤将替换当前JavaScript上下文中欲保护的Web API为用户实现的“中间人”代码以实现对原始API的包裹,从而拦截所有对于指定Web API的访问和调用。
2)额外替换特定API以防止攻击者绕过保护。该步骤将额外替换掉一些Web API,例如Web Worker,Iframe,防止攻击者利用以上API创建新的JavaScript执行上下文以绕过防护(即绕过保护代码)。
步骤1)中保护代码的具体实施方式有如下几个要点:
1-1)保护代码的实现位置是在网页源代码的最前,以此保证保护代码先于所有其他代码执行。对于类型为text/javascript的源代码,保护代码直接以纯文本的形式直接插入;对于类型为text/html的源代码,保护代码应该被<script>标签包裹后插入至源代码最前。
1-2)保护代码的实现需要被包裹在函数闭包内,以防止代码对原API的访问,实现对保护方案的绕过。例如对于要保护的API,名为protectedAPI,代码样例如下:
(function(){
window.protectedAPI=…(替换后的实现)
})();
1-3)当修改的API为顶层对象的属性时(在浏览器中为window,在node.js中为global),新的保护代码通过变量赋值方式覆盖原有对象实现。
1-4)当修改的API属于HTMLElement及其子类的属性时,则通过Object.defineProperty修改原有API,将其替换为保护代码,并将保护机制应用于HTMLElement及其子类的所有实例。其中,HTMLElement是网页标记语言HTML中所有HTML对象的基类,Object.defineProperty是JavaScript语言中用于在对象上定义新属性的静态方法。
其中,保护代码的具体内容取决于被保护的目标。例如,如果希望能够保护用户免受“alert弹窗造成的骚扰”,就可以用以下代码保护用户。
步骤2)中额外需要保护的API包括:
2-1)Web Worker。
Web Worker为JavaScript环境提供了一个新的上下文环境和新的线程,以在后台执行任务而不影响主线程。
例如,const myWorker=new Worker(aURL,options)。在新的上下文环境myWorker中,需要重新应用保护策略以对运行在这个上下文环境中的代码提供保护。所以需要额外的Web Worker实现以保护其中运行的代码,与保护其他的API的做法类似,具体步骤如下:
a)构造一个新的对象以替换原有的Web Worker对象。此处“新的对象”会包裹原有的Web Worker,其主要作用就是检查输入到Web Worker的参数,保证Web Worker的安全性。
b)Web Worker在构造时接收两个参数。对于其中的aURL参数,需要使用同步的XMLHttpRequest以获取原本会被传入Web Worker执行的源代码。在头部加入步骤1)的保护代码后,再传入createObjectURL处理生成URL,最后将生成的URL传入包裹的Web Worker。其中,XMLHttpRequest是JavaScript的API,其基本作用是可以在代码中访问外部服务器以获取aURL指向的代码,createObjectURL是JavaScript的API,可以创建一个指向传入对象的URL,并将创建的URL传入到Web Worker中。
c)对于options参数则直接传入包裹的Web Worker。
2-2)Iframe。
为了给Iframe中运行的代码提供保护,Iframe的部分属性也需要得到保护,其中包括contentWindow,src,srcDoc等。保护如何进行也同样取决于保护的目标和强度。
以上便完成了基于Hook的轻量级Web API保护。
基于同一发明构思,本发明另一实施例提供一种基于Hook的轻量级Web API保护装置,如图2所示,其包括:
Web API替换模块,用于将欲保护的Web API用保护代码替换,用以拦截所有对于指定Web API的访问和调用;
额外替换模块,用于额外替换特定的Web API,用以防止攻击者绕过所述保护代码。
基于同一发明构思,本发明另一实施例提供一种电子装置,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法的指令。
基于同一发明构思,本发明另一实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明的方法。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (8)
1.一种基于Hook的轻量级Web API保护方法,其特征在于,包括以下步骤:
将欲保护的Web API用保护代码替换,用以拦截所有对于指定Web API的访问和调用;
额外替换特定的Web API,用以防止攻击者绕过所述保护代码;
所述额外替换特定的Web API中,特定的Web API包括Web Worker、Iframe;替换WebWorker的步骤包括:
构造一个新的对象以替换原有的Web Worker对象;
Web Worker在构造时接收两个参数:对于aURL参数,使用同步的XMLHttpRequest以获取原本会被传入Web Worker执行的源代码,在头部加入保护代码后,再传入createObjectURL处理生成URL,最后将生成的URL传入包裹的Web Worker;对于options参数,则直接传入包裹的Web Worker。
2.根据权利要求1所述的方法,其特征在于,所述保护代码的实现位置是在网页源代码的最前,以此保证保护代码先于所有其他代码执行。
3.根据权利要求2所述的方法,其特征在于,对于类型为text/javascript的源代码,所述保护代码直接以纯文本的形式插入;对于类型为text/html的源代码,所述保护代码被<script>标签包裹后插入至源代码最前。
4.根据权利要求1所述的方法,其特征在于,当修改的Web API为顶层对象的属性时,保护代码通过变量赋值方式覆盖原有对象实现;当修改的Web API属于HTMLElement及其子类的属性时,通过Object.defineProperty修改原有API,将其替换为保护代码,并将保护机制应用于HTMLElement及其子类的所有实例。
5.根据权利要求1所述的方法,其特征在于,对Iframe的部分属性进行保护,所述部分属性包括contentWindow,src,srcDoc。
6.一种采用权利要求1~5中任一项所述方法的基于Hook的轻量级Web API保护装置,其特征在于,包括:
Web API替换模块,用于将欲保护的Web API用保护代码替换,用以拦截所有对于指定Web API的访问和调用;
额外替换模块,用于额外替换特定的Web API,用以防止攻击者绕过所述保护代码。
7.一种电子装置,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1~5中任一权利要求所述方法的指令。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现权利要求1~5中任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010256900.8A CN111581641B (zh) | 2020-04-03 | 2020-04-03 | 一种基于Hook的轻量级WebAPI保护方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010256900.8A CN111581641B (zh) | 2020-04-03 | 2020-04-03 | 一种基于Hook的轻量级WebAPI保护方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111581641A CN111581641A (zh) | 2020-08-25 |
CN111581641B true CN111581641B (zh) | 2022-07-29 |
Family
ID=72116611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010256900.8A Active CN111581641B (zh) | 2020-04-03 | 2020-04-03 | 一种基于Hook的轻量级WebAPI保护方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111581641B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105205359A (zh) * | 2015-10-12 | 2015-12-30 | 厦门飞信网络科技有限公司 | 一种JavaScript代码保护方法及装置 |
CN108885666A (zh) * | 2015-09-05 | 2018-11-23 | 万事达卡技术加拿大无限责任公司 | 用于检测和防止伪冒的系统和方法 |
CN109408073A (zh) * | 2018-09-21 | 2019-03-01 | 北京大学 | 一种Android非侵入式应用重打包方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11341206B2 (en) * | 2014-03-12 | 2022-05-24 | Akamai Technologies, Inc. | Intercepting not directly interceptable program object property |
US10789360B2 (en) * | 2018-01-25 | 2020-09-29 | Sap Se | Protection against third party JavaScript vulnerabilities |
-
2020
- 2020-04-03 CN CN202010256900.8A patent/CN111581641B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108885666A (zh) * | 2015-09-05 | 2018-11-23 | 万事达卡技术加拿大无限责任公司 | 用于检测和防止伪冒的系统和方法 |
CN105205359A (zh) * | 2015-10-12 | 2015-12-30 | 厦门飞信网络科技有限公司 | 一种JavaScript代码保护方法及装置 |
CN109408073A (zh) * | 2018-09-21 | 2019-03-01 | 北京大学 | 一种Android非侵入式应用重打包方法 |
Non-Patent Citations (1)
Title |
---|
Android恶意广告威胁分析与检测技术;韩心慧 等;《清华大学学报(自然科学版)》;20161231;第56卷(第5期);第468-477页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111581641A (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10678910B2 (en) | Modifying web page code to include code to protect output | |
US8997217B2 (en) | Safely processing and presenting documents with executable text | |
US9686288B2 (en) | Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks | |
US9058489B2 (en) | Marking documents with executable text for processing by computing systems | |
US8239939B2 (en) | Browser protection module | |
US8225392B2 (en) | Immunizing HTML browsers and extensions from known vulnerabilities | |
US8141154B2 (en) | System and method for inspecting dynamically generated executable code | |
JP4934722B2 (ja) | 文書内の組み込みスクリプトの挙動を制約するためのプログラム計装の方法及び装置 | |
Magazinius et al. | Safe wrappers and sane policies for self protecting JavaScript | |
JP4629332B2 (ja) | 状態参照モニタ | |
US9009821B2 (en) | Injection attack mitigation using context sensitive encoding of injected input | |
US20100242055A1 (en) | Remote procedure call chains | |
US20170083486A1 (en) | Regulating undesirable webpage code | |
EP3518135B1 (en) | Protection against third party javascript vulnerabilities | |
CN113779578B (zh) | 移动端应用的智能混淆方法和系统 | |
Kikuchi et al. | JavaScript instrumentation in practice | |
CN109218296A (zh) | 基于改进csp策略的xss防御系统和方法 | |
CN104423932B (zh) | Javascript中调用二进制组件的方法 | |
Barth et al. | Attacks on javascript mashup communication | |
CN111581641B (zh) | 一种基于Hook的轻量级WebAPI保护方法和装置 | |
Iqbal et al. | PoliDOM: Mitigation of DOM-XSS by detection and prevention of unauthorized DOM tampering | |
US11170098B1 (en) | System, method, and medium for protecting a computer browser from third-party computer code interference | |
Pham et al. | A Method to Enhance the Security Capability of Python IDE | |
Agaji et al. | AN EXPERIMENTAL STACK ATTACKS DETECTION AND RECOVERY FRAMEWORK USING AGENTS, CHECKPOINTS AND ROLLBACK | |
JP5003557B2 (ja) | 情報処理装置、情報処理方法、及び、情報処理プログラム |
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 |