CN103177199A - 网页应用代码保护方法及系统和执行的提速方法及系统 - Google Patents

网页应用代码保护方法及系统和执行的提速方法及系统 Download PDF

Info

Publication number
CN103177199A
CN103177199A CN 201210138213 CN201210138213A CN103177199A CN 103177199 A CN103177199 A CN 103177199A CN 201210138213 CN201210138213 CN 201210138213 CN 201210138213 A CN201210138213 A CN 201210138213A CN 103177199 A CN103177199 A CN 103177199A
Authority
CN
China
Prior art keywords
code
source code
web application
javascript
file
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
CN 201210138213
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 Shangda Networking Development Co., Ltd.
Original Assignee
Shengle Information Technolpogy Shanghai 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 Shengle Information Technolpogy Shanghai Co Ltd filed Critical Shengle Information Technolpogy Shanghai Co Ltd
Priority to CN 201210138213 priority Critical patent/CN103177199A/zh
Publication of CN103177199A publication Critical patent/CN103177199A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种网页应用的代码保护方法及系统和网络应用执行的提速方法及系统,能将网页应用的文本形式源代码预编译为二进制格式数据用于产品发布,利用二进制格式数据具有很强的保护能力、难以被人工阅读且难以逆向恢复成原始的文本形式代码的特点,极大地避免网页应用源代码被剽窃抄袭的风险,有效地保护了网页应用的程序代码;并在网络应用的程序初次安装或执行阶段,将二进制格式数据翻译成本机能直接执行的本机代码,由此在网页应用发布到执行多次的过程中仅需一次文本形式的代码解析和二进制翻译,从而避免了网页应用在每次执行时所进行的文本形式的代码解析和二进制翻译工作,提高网页应用的运行性能。

Description

网页应用代码保护方法及系统和执行的提速方法及系统
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种网页应用代码保护方法及系统和执行的提速方法及系统。
背景技术
目前的网页应用在发布时以文本文件形式保存了JavaScript/HTML/CSS的源代码。在每次网页应用程序被加载执行时,浏览器会将文本表示的HTML/CSS标签解析成二进制的内部表示,而JavaScript源代码会被JavaScript虚拟机翻译并执行。
加载网页应用的浏览器和JavaScript虚拟机所进行的源代码解析工作将消耗很多性能,当网页应用变得复杂时,用户会有系统反应变迟钝的感觉。
另外,由于目前网页应用都直接将文本文件形式的源代码发布并直接在客户设备上执行,因此很难保证开发人员的知识产权,第三方可轻易利用网页应用的源代码进行剽窃抄袭并从中牟利;而且,这类形式的网页应用的程序逻辑也可以被轻易修改,加入恶意代码,不利于网页应用源代码的保密和维权。
针对代码保护的问题,目前市面上已有对网页应用文本文件代码进行缩减重新排版的代码混淆器,但由于这类混淆器仍旧输出了文本文件格式的代码,因此仍可被轻易恢复成易读的源代码,保护效果很不理想。
因此,需要一种一种网页应用的代码保护方法及系统,能够有效提高网页应用的代码保密性能,同时需要网页应用执行的提速方法及系统,避免网页应用在加载时所进行的解析和二进制翻译工作,提高网页应用的运行性能。
发明内容
本发明的目的在于提供一种网页应用代码保护方法及系统和执行的提速方法及系统,有效提高网页应用发布的代码保密性能,并避免网页应用在每次执行时所进行的文本形式的代码解析和二进制翻译工作,提高网页应用的运行性能。
为解决上述问题,本发明提供一种网页应用的代码保护方法,包括:
在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据;
保存所述二进制格式数据到用于所述网络应用发布的输出文件中。
进一步的,所述程序源代码包括HTML、XML、CSS和JavaScript。
进一步的,所述预编译过程的步骤包括:
读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树并二进制序列化所述DOM对象树,生成二进制格式代码;
读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生JavaScript程序源代码语义等价的二进制格式字节码。
进一步的,在所述预编译过程中,解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并提取其嵌入的JavaScript程序源代码并对所述嵌入的JavaScript源代码进行词法和语法分析,产生二进制格式字节码,更新DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
进一步的,所述预编译过程的步骤还包括:对所述二进制格式代码和二进制格式字节码进行压缩、加密、数字签名。
本发明还提供一种网页应用的代码保护系统,包括:
存储单元,用于存储用于所述网络应用发布的输出文件;
二进制编译器,用于在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据。
进一步的,所述程序源代码包括HTML、XML、CSS和JavaScript。
进一步的,所述二进制编译器包括:
HTML/XML/CSS编译器,用于在所述网页应用的发布阶段,读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树并二进制序列化所述DOM对象树,生成二进制格式代码;
JavaScript编译器,用于在所述网页应用的发布阶段,读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生二进制格式字节码。
进一步的,所述HTML/XML/CSS编译器解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并调用所述JavaScript编译器,所述JavaScript编译器提取其嵌入的JavaScript源程序代码并对所述嵌入的JavaScript代码进行词法和语法分析,产生二进制格式的字节码,所述HTML/XML/CSS编译器更新所述DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
进一步的,所述网页应用的代码保护系统还包括:加密器,用于对所述二进制格式代码和二进制格式字节码进行压缩、加密、数字签名。
本发明还提供一种网页应用执行的提速方法,包括:预编译过程和翻译过程,其中,
所述预编译过程在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据并保存至一输出文件;
所述翻译过程在所述网页应用的初次安装或加载执行阶段进行,读取所述输出文件并将其中的二进制格式数据翻译成本机代码,保存至一存档文件,本机直接安装或执行所述本机代码,并将安装或执行的结果保存至所述存档文件。
进一步的,所述程序源代码包括HTML、XML、CSS和JavaScript。
进一步的,所述预编译过程的步骤包括:
读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树并二进制序列化DOM对象树,生成二进制格式代码并保存至所述输出文件;
读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生二进制格式字节码并保存至所述输出文件中。
进一步的,在所述预编译过程中,解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并提取其嵌入的JavaScript程序源代码并对所述嵌入的JavaScript源代码进行词法和语法分析,产生二进制格式字节码,更新DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
进一步的,所述预编译过程的步骤还包括:对所述二进制格式代码和二进制格式字节码进行压缩、加密、数字签名。
进一步的,所述翻译过程包括:
在所述网页应用的初次安装阶段,读取所述输出文件中的所有二进制格式字节码并将其针对所述本机的环境进行二进制翻译,产生本机代码,保存至一存档文件;
在所述网页应用的加载执行阶段,读取所述输出文件中的HTML、XML及CSS程序源代码对应的二进制格式代码,并在所述本机中产生DOM对象树;
根据所述DOM对象树确定需加载JavaScript程序的二进制格式字节码,并在所述存档文件找到所述二进制格式字节码对应的本机代码;
所述本机加载并执行所述对应的本机代码。
进一步的,所述翻译过程还包括:在产生本机代码后,对所述本机代码进行数字签名。
进一步的,所述翻译过程还包括:在所述本机中产生DOM对象树之前,先对读取HTML、XML及CSS程序的二进制格式代码进行完整性检查,若文件被破坏,则提示错误信息并退出所述网页应用的加载执行。
进一步的,所述翻译过程还包括:在找到所述二进制格式字节码对应的本机代码之后,检查所述二进制格式字节码对应的数字签名,若所述数字签名有效,则执行所述二进制格式字节码对应的本机代码,收集执行结果并更新所述DOM对象树;若所述数字签名无效,则提示错误信息并退出所述网页应用的加载执行。
本发明还提供一种网页应用执行的提速系统,包括:
二进制编译器,用于在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据并保存至一输出文件;
二进制翻译器,用于在所述网页应用的初次安装或加载执行阶段进行,读取所述输出文件并将其中的二进制格式数据翻译成本机代码,保存至一存档文件;
本机执行器,用于本机直接安装或执行所述本机代码,并将安装或执行的结果保存至所述存档文件。
进一步的,所述二进制编译器包括:
HTML/XML/CSS编译器,用于在所述网页应用的发布阶段,读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树并二进制序列化所述DOM对象树,生成二进制格式代码并保存至所述输出文件;
JavaScript编译器,用于在所述网页应用的发布阶段,读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生二进制格式字节码并保存至所述输出文件中。
进一步的,所述HTML/XML/CSS编译器解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并调用所述JavaScript编译器,所述JavaScript编译器提取其嵌入的JavaScript源程序代码并对所述嵌入的JavaScript代码进行词法和语法分析,产生二进制格式的字节码,所述HTML/XML/CSS编译器更新所述DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
进一步的,还包括:加密器,用于对所有二进制格式数据和本机代码进行压缩、加密及数字签名。
与现有技术相比,本发明提供的网络应用的代码保护方法及系统,能将网页应用的文本形式源代码预编译为二进制格式数据用于产品发布,利用二进制格式数据具有很强的保护能力、难以被人工阅读且难以逆向恢复成原始的文本形式代码的特点,极大地避免网页应用源代码被剽窃抄袭的风险,有效地保护了网页应用的程序代码;
本发明提供的网页应用执行的提速方法及系统,通过在网络应用的程序发布阶段,将网络应用中文本形式保存的如HTML/XML/CSS/JavaScript程序源代码文件预编译为二进制格式数据;在网络应用的程序初次安装或执行阶段,将如JavaScript程序的二进制格式数据翻译成本机代码,将如HTML/XML/CSS程序的二进制数据在本机中产生DOM树,然后本机再直接执行DOM树及相应的本机代码,将涉及到的编译和翻译的数据保存,在网页应用发布到执行多次的过程中,仅需一次文本形式的代码解析和二进制翻译,从而避免了网页应用在每次执行时所进行的文本形式的代码解析和二进制翻译工作,提高了网页应用的运行性能。
附图说明
图1是本发明实施例一网页应用执行的提速方法流程图;
图2是本发明实施例一中HTML、XML及CSS程序的编译流程图;
图3是本发明实施例一中对网页应用程序进行二进制编译示意图;
图4是本发明实施例一中对网页应用程序进行二进制翻译的示意图;
图5是本发明实施例一中对预编译的网页应用程序进行加载执行的流程图;
图6是本发明实施例一中网页应用执行的提速系统架构示意图;
图7是本发明实施例二的网页应用的代码保护方法流程图;
图8是本发明实施例二的网页应用的代码保护系统流程图。
具体实施方式
本发明所述的网页应用,在发布时主要以文本形式保存了两类源代码文件,第一类程序源代码文件主要包括HTML/XML/CSS源代码文件;第二类程序源代码主要包括JavaScript的源代码文件。
HTML即文本标记语言(Hypertext Markup Language),是用于描述网页文档的一种标记语言。
XML即可扩展标记语言(Extensible Markup Language),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
CSS即级联样式表(Cascading Style Sheet),通常又称为“风格样式表(StyleSheet)”,它是用来进行网页风格设计的。比如,如果想让链接字未点击时是蓝色的,当鼠标移上去后字变成红色的且有下划线,这就是一种风格。通过设立样式表,可以统一地控制HMTL中各标志的显示属性。级联样式表可以使人更有效地控制网页外观。并且,使用级联样式表,可以扩充精确指定网页元素位置、外观以及创建特殊效果的能力。
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,字节顺序记号。
以下结合附图和具体实施例对本发明提出的网页应用执行的提速方法及系统和网络应用的代码保护方法及系统作进一步详细说明。
实施例一
如图1所示,本实施例提供了一种基于网页应用执行的提速方法,包括以下步骤:
S1,在所述网页应用的发布阶段,将所述第一类程序源代码和第二类程序源代码预编译成二进制格式数据并保存至一输出文件;
S2,在所述网页应用的初次安装或加载执行阶段,读取所述输出文件并将其中的二进制格式数据翻译成本机代码,本机直接安装或执行所述本机代码,本机代码及安装或执行的结果保存至一存档文件。
在本发明一优选实施例中,步骤S1可以分为两步:
S11,读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树,二进制序列化所述DOM对象树,生成二进制格式代码并保存至所述输出文件;
S12,读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生二进制格式字节码并保存至所述输出文件中。
如图2所示,在网络应用的HTML、XML及CSS程序源代码文件中一般会嵌入JavaScript源代码,因此,本实施例对HTML、XML及CSS程序源代码文件进行二进制格式的预编译流程如下:
S110:读取所述HTML、XML及CSS程序源代码文件;
S111:解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树,并判断是否出现解析错误;
若是,则执行步骤S113:提示错误信息并推出所述网页应用的发布;
若否,则执行步骤S114:判断所述HTML、XML及CSS程序源代码文件是否包含有嵌入的JavaScript源代码,若是,执行步骤S115至S117;若否,直接执行步骤S118;
S115:提取所述HTML、XML及CSS程序源代码文件中嵌入的JavaScript程序源代码;
S116;对所述嵌入的JavaScript源代码进行词法和语法分析,产生二进制格式字节码;
S117:更新DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置;
S118:二进制序列化所述DOM对象树,生成二进制格式代码;
S119:对所述二进制格式代码进行压缩、加密以及数字签名保存至一输出文件,并将所述输出文件发布。
本实施例中,步骤S111用于在编译过程中,源代码文件具有错误,比如不合法的HTML标签,错误的CSS结构等,可以提示用户错误信息,并拒绝产生编译结果。步骤S119中对二进制格式代码进行压缩、加密以及数字签名等,用于保护编译的二进制代码不被非法逆向工程或者篡改。
本实施例中,对于HTML/XML文件,编译过程与浏览器解析这类文件类似,将他们进行解析,并在内存中产生DOM对象树。但这里的编译并不会将DOM对象树用于图形渲染,而是将它进行序列化,保存于输出文件。
如图3所示,按照每个html/xml文件进行,编译结果将产生与于源文件同名,但不同扩展名的编译文件,如a.html通过编译后将产生a.chtml(compiledhtml),该文件打包至输出文件。经过编译后,开发者仅需要发布编译产生的输出文件app.pkg。
同样的,如图3所示,对于CSS样式表,编译过程也与浏览器解析这类文件向类似。编译单位将按每个css源代码文件进行,编译器将解析在内存中的CSS对象进行二进制序列化到对应文件,比如a.css将编译产生a.ccss(compiledcss),然后打包到输出文件app.pkg。
本实施例中,如图3所示,对JavaScript代码的编译按照每个JavaScript源代码文件为单位进行,将文本形式的JavaScript源代码进行必要的词法、语法分析和检查,并最终产生二进制形式的字节码(Bytecode)文件。最终产生的二进制文件也可以经过压缩、加密、数据签名,保证代码数据不被逆向工程和篡改。
在本实施例中,如图1所示,步骤S2可以分为S21至S24四步:
S21,在所述网页应用的初次安装阶段,将所有JavaScript程序的二进制格式字节码针对所述本机的环境进行二进制翻译,产生本机代码;
S22,在所述网页应用的加载执行阶段,读取所述输出文件中的HTML、XML及CSS程序源代码对应的二进制格式代码,并在所述本机中产生DOM对象树;
S23,根据所述DOM对象树确定需加载JavaScript程序的二进制格式字节码,并找到其对应的本机代码;
S24,所述本机加载并执行所述对应的本机代码。
如图4所示,当用户初次使用或者安装经过步骤S 1预编译并打包的网页应用时,将进行打包的输出文件解包,并将其中以二进制形式的字节码(bytecode)形式保存的JavaScript程序针对本机环境进行二进制翻译,产生与二进制格式字节码程序等价的本机代码,供后续网络程序的执行使用。
在步骤S21的JavaScript程序二进制格式字节码的二进制翻译过程中,主要是针对本机的硬件特性来进行优化,比如设备是否具有特殊的硬件(如GPU)、是否支持某种特殊的硬件加速和CPU的特殊优化指令集。
在步骤S21的二进制翻译过程中,将产生的二进制翻译结果保存至存档文件(.codecache)。每个网页应用将包含一个属于其自身的.codecache文件。在产生.codecache文件时,还可以将对.codecache文件进行数字签名,用于防治恶意程序修改产生的.codecache文件,保护程序完整性。
本实施例中网络应用发布的输出文件是经过压缩、加密以及数字签名的,所以网络应用在被加载并执行时的操作,即步骤S22至S24具体的可以用如图5所示的流程图来表示。如图5所示,网络应用在被加载并执行的步骤包括:
S21,在所述网页应用的初次安装阶段,读取所述输出文件中的JavaScript程序的二进制格式字节码,并将所有JavaScript程序的二进制格式字节码针对所述本机的环境进行二进制翻译,产生本机代码,对所述本机代码进行数字签名;
S220,在所述网页应用的加载执行阶段,读取所述输出文件中的HTML、XML及CSS程序源代码对应的二进制格式代码,并验证所述二进制格式代码是否完整;若否,提示错误信息,并退出所述网页应用的加载执行;若是,执行步骤S221:在所述本机中产生DOM对象树;
S230,判断是否需要加载并执行二进制格式字节码形成的JavaScript程序,若否,执行步骤S242;若是,则执行步骤S231:加载二进制格式字节码,并在存档文件中找到其对应的本机代码;
S232,检查所述对应的本机代码的数字签名是否有效,若否,提示错误信息,并退出所述网页应用的加载执行;若是,执行步骤S240至S242;
S240,执行所述对应的本机代码;
S241,完成网络应用的图形渲染;
S242,退出网络应用的程序执行。
本实施例中,图5中所示流程实际上执行的结果是:当预先编译的网页应用被执行时,在发布阶段产生的与编译的HTML/XML/CSS文件将被浏览器或者执行宿主加载,并检查文件有效性;由于解析动作已经在发布时的预编译阶段完成,因此浏览器或者执行宿主无需执行额外的解析工作,可以直接从预编译的对应文件中产生DOM对象树;浏览器或者执行宿主在执行网页应用时,将首先根据由HTML/XML/CSS编译而来的DOM树决定需要加载的bytecode形式的JavaScript程序;在确定需要加载的bytecode文件后,浏览器或者执行宿主将查询网页应用的.codecache文件,找到与bytecode相对应的本机代码;在开始执行对应的本机代码前,浏览器或者执行宿主检查对.codecache文件数字签名的有效性,确保该文件没有被恶意修改,在确认签名合法有效后,与bytecode对应的本机代码将开始执行。如果签名无效,则提示错误,拒绝运行程序。
如图6所示,本实施例还提供一种网页应用执行的提速系统,所述提速系统包括:
HTML/XML/CSS编译器31,用于读取并解析HTML、XML及CSS程序源代码文件,产生DOM对象树,二进制序列化所述DOM对象树,生成二进制格式代码保存到一输出文件;
JavaScript编译器32,用于在所述网页应用的发布阶段,读取JavaScript程序源代码文件,并对每个JavaScript源代码进行词法和语法分析,产生二进制格式字节码并保存至所述输出文件中;
二进制翻译器33,用于在所述网页应用的初次安装或加载执行阶段,读取所述输出文件并将其中的二进制格式数据翻译成本机代码;
加密器34,用于对所述HTML/XML/CSS编译器31的二进制格式代码、JavaScript编译器32的二进制格式字节码以及二进制翻译器33的本机代码进行压缩、加密及数字签名;
本机执行器35,用于本机直接安装或执行所述本机代码,本机代码及安装或执行的结果保存至一存档文件。
本实施例中,所述HTML/XML/CSS编译器31解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并调用所述JavaScript编译器32,所述JavaScript编译器32提取其嵌入的JavaScript源程序代码并至所述输出文件中,对所述嵌入的JavaScript代码进行词法和语法分析,产生二进制格式的字节码,所述HTML/XML/CSS编译器31更新所述DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
本实施例中,由于加密器34对所述HTML/XML/CSS编译器31的二进制格式代码、JavaScript编译器32的二进制格式字节码进行了压缩、加密及数字签名,因此,二进制翻译器33在执行翻译过程中,先解压输出文件及其二进制格式代码、二进制格式字节码,然后验证二进制格式代码及二进制格式字节码的完整性以及数字签名的有效性,当数据完整有效时才能使得本机执行器35完成网络应用的程序安装及执行。
本实施例中,由于加密器34对二进制翻译器33的本机代码进行了数字签名,因此,本机执行器35在执行相应的本机代码前首先要检查本机代码的数字签名的有效性,当数字签名有效时本机才能执行该本机代码,完成网络应用的程序安装及执行。
由此可见,本发明提供的网页应用执行的提速方法及系统,通过在网络应用的程序发布阶段,将网络应用中文本形式保存的如HTML/XML/CSS/JavaScript程序源代码文件预编译为二进制格式数据;在网络应用的程序初次安装或执行阶段,将如JavaScript程序的二进制格式数据翻译成本机代码,将如HTML/XML/CSS程序的二进制数据在本机中产生的DOM树,然后本机再直接执行DOM树及相应的本机代码,将涉及到的编译和翻译的数据保存,在网页应用发布到执行多次的过程中仅需一次文本形式的代码解析和二进制翻译,从而避免了网页应用在每次执行时所进行的文本形式的代码解析和二进制翻译工作,提高网页应用的运行性能。
实施例二
如图7所示,本实施例提供一种网页应用的代码保护方法,包括:
S71,在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据;
S72,保存所述二进制格式数据到用于所述网络应用发布的输出文件中。
本实施例中,所述程序源代码包括HTML、XML、CSS和JavaScript,因此,在步骤S71中,在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据时,包括:
(1)将网页应用程序以文本形式保存的HTML/CSS/JavaScript文件在程序发布时预编译成二进制格式代码;
(2)将网页应用程序以文本形式保存的JavaScript代码在程序发布时预编译成二进制格式字节码(bytecode)。
在上述(1)、(2)项过程中,还可以同时进行属于签名验证以及加密、代码混淆等技术操作。
步骤S71的HTML、XML、CSS以及JavaScript程序源代码的预编译过程可以参考实施例一中涉及步骤S1的相关内容以及附图2至5所示的内容,在此不再赘述。
步骤S72中的输出文件可以是经压缩后的压缩文件,即将步骤S71的HTML/CSS/JavaScript文件预编译后的二进制格式代码文件以及JavaScript二进制格式字节码文件分别压缩存储至所述输出文件,然后网页应用发布时直接发布为所述输出文件。
需要说明的是,通过本实施例的网页应用的代码保护方法发布的网页应用需要在用户初次执行或者安装这类时,对网页应用的二进制格式数据(包括HTML、XML、CSS二进制格式代码以及JavaScript二进制格式字节码)进行有效性签名验证、数据解密,并在签名验证和解密成功后,将如JavaScript程序的二进制格式数据翻译成本机代码,将如HTML/XML/CSS程序的二进制数据在本机中产生的DOM树,然后用户本机再直接执行DOM树及相应的本机代码,将涉及到的编译和翻译的数据保存,具体的翻译过程可以参考实施例一中涉及步骤S2的相关内容以及附图2至5所示的内容,在此不再赘述,由此在网页应用发布到执行多次的过程中仅需一次文本形式的代码解析和二进制翻译,从而避免了网页应用在每次执行时所进行的文本形式的代码解析和二进制翻译工作,提高网页应用的运行性能。
本实施例还提供一种网页应用的代码保护系统,包括:
存储单元81,用于存储用于所述网络应用发布的输出文件810;
二进制编译器82,用于在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据。
本实施例中,由于所述程序源代码包括HTML、XML、CSS和JavaScript,相应的二进制编译器82包括:
HTML/XML/CSS编译器821,用于在所述网页应用的发布阶段,读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树并二进制序列化所述DOM对象树,生成二进制格式代码并存储至输出文件810;
JavaScript编译器822,用于在所述网页应用的发布阶段,读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生二进制格式字节码并存储至输出文件810。
需要说明的是,若HTML、XML及CSS程序源代码文件中嵌入入JavaScript程序源代码,所述HTML/XML/CSS编译器821解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并调用所述JavaScript编译器822,所述JavaScript编译器822提取其嵌入的JavaScript源程序代码并对所述嵌入的JavaScript代码进行词法和语法分析,产生二进制格式的字节码,所述HTML/XML/CSS编译器821更新所述DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
本实施例的所述网页应用的代码保护系统还包括:加密器83,用于对所述二进制格式代码和二进制格式字节码进行压缩、加密、数字签名,进一步确保该网页应用发布的输出文件不会被恶意修改,增强网页应用的代码保密性能。
由此可见,本发明提供的网页应用的代码保护方法及系统,能将网页应用的文本形式源代码预编译为二进制格式数据用于产品发布,利用二进制格式数据具有很强的保护能力、难以被人工阅读且难以逆向恢复成原始的文本形式代码的特点,极大地避免网页应用源代码被剽窃抄袭的风险,有效地保护了网页应用的程序代码;进一步通过数字签名、加密、代码混淆等代码保护手段,防止发布后的网页应用程序代码被恶意修改,增强网页应用的代码保密性能。
综上所述,本发明提供一种网页应用执行的提速方法及系统和网络应用的代码保护方法及系统,能将网页应用的文本形式源代码预编译为二进制格式数据用于产品发布,利用二进制格式数据具有很强的保护能力、难以被人工阅读且难以逆向恢复成原始的文本形式代码的特点,极大地避免网页应用源代码被剽窃抄袭的风险,有效地保护了网页应用的程序代码;并在网络应用的程序初次安装或执行阶段,将二进制格式数据翻译成本机能直接执行的本机代码,由此在网页应用发布到执行多次的过程中仅需一次文本形式的代码解析和二进制翻译,从而避免了网页应用在每次执行时所进行的文本形式的代码解析和二进制翻译工作,提高网页应用的运行性能。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (24)

1.一种网页应用执行的提速方法,其特征在于,包括:预编译过程和翻译过程,其中,
所述预编译过程在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据并保存至一输出文件;
所述翻译过程在所述网页应用的初次安装或加载执行阶段进行,读取所述输出文件并将其中的二进制格式数据翻译成本机代码,保存至一存档文件,本机安装或执行所述本机代码,并将安装或执行的结果保存至所述存档文件。
2.如权利要求1所述的网页应用执行的提速方法,其特征在于,所述程序源代码包括HTML、XML、CSS和JavaScript。
3.如权利要求2所述的网页应用执行的提速方法,其特征在于,所述预编译过程的步骤包括:
读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树并二进制序列化所述DOM对象树,生成二进制格式代码并保存至所述输出文件;
读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生二进制格式字节码并保存至所述输出文件中。
4.如权利要求3所述的网页应用执行的提速方法,其特征在于,在所述预编译过程中,解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并提取其嵌入的JavaScript程序源代码并对所述嵌入的JavaScript源代码进行词法和语法分析,产生二进制格式字节码,更新DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
5.如权利要求3所述的网页应用执行的提速方法,其特征在于,所述预编译过程的步骤还包括:对所述二进制格式代码和二进制格式字节码进行压缩、加密、数字签名。
6.如权利要求4所述的网页应用执行的提速方法,其特征在于,所述翻译过程包括:
在所述网页应用的初次安装阶段,读取所述输出文件中的所有二进制格式字节码并将其针对所述本机的环境进行二进制翻译,产生本机代码,保存至一存档文件;
在所述网页应用的加载执行阶段,读取所述输出文件中的HTML、XML及CSS程序源代码对应的二进制格式代码,并在所述本机中产生DOM对象树;
根据所述DOM对象树确定需加载JavaScript程序的二进制格式字节码,并在所述存档文件找到所述二进制格式字节码对应的本机代码;
所述本机加载并执行所述对应的本机代码。
7.如权利要求6所述的网页应用执行的提速方法,其特征在于,所述翻译过程还包括:在产生本机代码后,对所述本机代码进行数字签名。
8.如权利要求6所述的网页应用执行的提速方法,其特征在于,所述翻译过程还包括:在所述本机中产生DOM对象树之前,先对读取HTML、XML及CSS程序的二进制格式代码进行完整性检查,若文件被破坏,则提示错误信息并退出所述网页应用的加载执行。
9.如权利要求6所述的网页应用执行的提速方法,其特征在于,所述翻译过程还包括:在找到所述二进制格式字节码对应的本机代码之后,检查所述二进制格式字节码对应的数字签名,若所述数字签名有效,则执行所述二进制格式字节码对应的本机代码,收集执行结果并更新所述DOM对象树;若所述数字签名无效,则提示错误信息并退出所述网页应用的加载执行。
10.一种网页应用执行的提速系统,其特征在于,包括:
二进制编译器,用于在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据并保存至一输出文件;
二进制翻译器,用于在所述网页应用的初次安装或加载执行阶段进行,读取所述输出文件并将其中的二进制格式数据翻译成本机代码,保存至一存档文件;
本机执行器,用于本机直接安装或执行所述本机代码,并将安装或执行的结果保存至所述存档文件。
11.如权利要求10所述的网页应用执行的提速系统,其特征在于,所述程序源代码包括HTML、XML、CSS和JavaScript。
12.如权利要求11所述的网页应用执行的提速系统,其特征在于,所述二进制编译器包括:
HTML/XML/CSS编译器,用于在所述网页应用的发布阶段,读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树并二进制序列化所述DOM对象树,生成二进制格式代码并保存至所述输出文件;
JavaScript编译器,用于在所述网页应用的发布阶段,读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生二进制格式字节码并保存至所述输出文件中。
13.如权利要求12所述的网页应用执行的提速系统,其特征在于,所述HTML/XML/CSS编译器解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并调用所述JavaScript编译器,所述JavaScript编译器提取其嵌入的JavaScript源程序代码并对所述嵌入的JavaScript代码进行词法和语法分析,产生二进制格式的字节码,所述HTML/XML/CSS编译器更新所述DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
14.如权利要求10所述的网页应用执行的提速系统,其特征在于,还包括:加密器,用于对所有二进制格式数据和本机代码进行压缩、加密及数字签名。
15.一种网页应用的代码保护方法,其特征在于,包括:
在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据;
保存所述二进制格式数据到用于所述网络应用发布的输出文件中。
16.如权利要求15所述的网页应用的代码保护方法,其特征在于,所述程序源代码包括HTML、XML、CSS和JavaScript。
17.如权利要求16所述的网页应用的代码保护方法,其特征在于,所述预编译过程的步骤包括:
读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树并二进制序列化所述DOM对象树,生成二进制格式代码;
读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生JavaScript程序源代码语义等价的二进制格式字节码。
18.如权利要求17所述的网页应用的代码保护方法,其特征在于,在所述预编译过程中,解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并提取其嵌入的JavaScript程序源代码并对所述嵌入的JavaScript源代码进行词法和语法分析,产生二进制格式字节码,更新DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
19.如权利要求16所述的网页应用的代码保护方法,其特征在于,所述预编译过程的步骤还包括:对所述二进制格式代码和二进制格式字节码进行压缩、加密、数字签名。
20.一种网页应用的代码保护系统,其特征在于,包括:
存储单元,用于存储用于所述网络应用发布的输出文件;
二进制编译器,用于在所述网页应用的发布阶段进行,将文本形式保存的所述网络应用的程序源代码预编译成二进制格式数据,并存储至所述输出文件中。
21.如权利要求20所述的网页应用的代码保护系统,其特征在于,所述程序源代码包括HTML、XML、CSS和JavaScript。
22.如权利要求21所述的网页应用的代码保护系统,其特征在于,所述二进制编译器包括:
HTML/XML/CSS编译器,用于在所述网页应用的发布阶段,读取并解析所述HTML、XML及CSS程序源代码文件,产生DOM对象树并二进制序列化所述DOM对象树,生成二进制格式代码;
JavaScript编译器,用于在所述网页应用的发布阶段,读取JavaScript程序源代码文件,对每个JavaScript源代码进行词法和语法分析,产生二进制格式字节码。
23.如权利要求22所述的网页应用的代码保护系统,其特征在于,所述HTML/XML/CSS编译器解析HTML、XML及CSS程序源代码文件时,识别出包含有嵌入JavaScript程序源代码的HTML、XML及CSS程序源代码文件并调用所述JavaScript编译器,所述JavaScript编译器提取其嵌入的JavaScript源程序代码并对所述嵌入的JavaScript代码进行词法和语法分析,产生二进制格式的字节码,所述HTML/XML/CSS编译器更新所述DOM对象树,记录所述嵌入的JavaScript源代码与相应的HTML、XML及CSS程序源代码文件的包含关系及其位于HTML、XML及CSS程序源代码文件的逻辑位置至所述输出文件中。
24.如权利要求22所述的网页应用的代码保护系统,其特征在于,还包括:加密器,用于对所述二进制格式代码和二进制格式字节码进行压缩、加密、数字签名。
CN 201210138213 2011-12-22 2012-05-04 网页应用代码保护方法及系统和执行的提速方法及系统 Pending CN103177199A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201210138213 CN103177199A (zh) 2011-12-22 2012-05-04 网页应用代码保护方法及系统和执行的提速方法及系统

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201110436912 2011-12-22
CN201110436912.X 2011-12-22
CN 201210138213 CN103177199A (zh) 2011-12-22 2012-05-04 网页应用代码保护方法及系统和执行的提速方法及系统

Publications (1)

Publication Number Publication Date
CN103177199A true CN103177199A (zh) 2013-06-26

Family

ID=48637049

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201210138213 Pending CN103177199A (zh) 2011-12-22 2012-05-04 网页应用代码保护方法及系统和执行的提速方法及系统

Country Status (1)

Country Link
CN (1) CN103177199A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103679051A (zh) * 2013-12-31 2014-03-26 天津书生软件技术有限公司 一种文件隐藏方法
CN104657189A (zh) * 2013-11-20 2015-05-27 财团法人资讯工业策进会 混合式动态码编译装置、方法及其服务系统
CN105656889A (zh) * 2015-12-30 2016-06-08 东软集团股份有限公司 WebApp的发布方法、服务器及客户端
CN107172035A (zh) * 2017-05-11 2017-09-15 北京安赛创想科技有限公司 网络攻击信息的检测方法及装置
CN108427559A (zh) * 2018-03-14 2018-08-21 新华三技术有限公司 一种脚本文件生成和调用方法以及装置
CN109101237A (zh) * 2018-08-01 2018-12-28 北京顶象技术有限公司 代码的加密编译方法及装置
CN110632499A (zh) * 2019-09-23 2019-12-31 珠海格力电器股份有限公司 基于测试对象的测试向量生成方法及存储介质
CN110909319A (zh) * 2019-11-29 2020-03-24 Oppo(重庆)智能科技有限公司 应用处理方法及相关产品
CN112035179A (zh) * 2020-08-12 2020-12-04 深圳市欢太科技有限公司 一种应用启动方法、装置和存储介质
CN112035178A (zh) * 2020-08-12 2020-12-04 深圳市欢太科技有限公司 一种应用启动方法、装置和存储介质
CN112148318A (zh) * 2020-10-12 2020-12-29 Oppo广东移动通信有限公司 应用包发布方法、应用方法、装置、介质、服务器及设备
CN112148386A (zh) * 2020-10-12 2020-12-29 Oppo广东移动通信有限公司 一种应用加载方法、装置及计算机可读存储介质
CN112214223A (zh) * 2020-10-29 2021-01-12 Oppo广东移动通信有限公司 应用启动方法、装置、终端设备及计算机可读存储介质

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104657189A (zh) * 2013-11-20 2015-05-27 财团法人资讯工业策进会 混合式动态码编译装置、方法及其服务系统
CN104657189B (zh) * 2013-11-20 2017-12-22 财团法人资讯工业策进会 混合式动态码编译装置、方法及其服务系统
CN103679051A (zh) * 2013-12-31 2014-03-26 天津书生软件技术有限公司 一种文件隐藏方法
CN105656889A (zh) * 2015-12-30 2016-06-08 东软集团股份有限公司 WebApp的发布方法、服务器及客户端
CN107172035A (zh) * 2017-05-11 2017-09-15 北京安赛创想科技有限公司 网络攻击信息的检测方法及装置
CN108427559A (zh) * 2018-03-14 2018-08-21 新华三技术有限公司 一种脚本文件生成和调用方法以及装置
CN109101237A (zh) * 2018-08-01 2018-12-28 北京顶象技术有限公司 代码的加密编译方法及装置
CN110632499B (zh) * 2019-09-23 2021-04-23 珠海格力电器股份有限公司 基于测试对象的测试向量生成方法及存储介质
CN110632499A (zh) * 2019-09-23 2019-12-31 珠海格力电器股份有限公司 基于测试对象的测试向量生成方法及存储介质
CN110909319A (zh) * 2019-11-29 2020-03-24 Oppo(重庆)智能科技有限公司 应用处理方法及相关产品
CN110909319B (zh) * 2019-11-29 2022-03-29 Oppo(重庆)智能科技有限公司 应用处理方法及相关产品
CN112035178A (zh) * 2020-08-12 2020-12-04 深圳市欢太科技有限公司 一种应用启动方法、装置和存储介质
CN112035179A (zh) * 2020-08-12 2020-12-04 深圳市欢太科技有限公司 一种应用启动方法、装置和存储介质
CN112148318A (zh) * 2020-10-12 2020-12-29 Oppo广东移动通信有限公司 应用包发布方法、应用方法、装置、介质、服务器及设备
CN112148386A (zh) * 2020-10-12 2020-12-29 Oppo广东移动通信有限公司 一种应用加载方法、装置及计算机可读存储介质
WO2022078057A1 (zh) * 2020-10-12 2022-04-21 Oppo广东移动通信有限公司 应用包发布方法、应用方法、装置、介质、服务器及设备
CN112148318B (zh) * 2020-10-12 2024-02-13 Oppo广东移动通信有限公司 应用包发布方法、应用方法、装置、介质、服务器及设备
CN112214223A (zh) * 2020-10-29 2021-01-12 Oppo广东移动通信有限公司 应用启动方法、装置、终端设备及计算机可读存储介质
CN112214223B (zh) * 2020-10-29 2024-02-09 Oppo广东移动通信有限公司 应用启动方法、装置、终端设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN103177199A (zh) 网页应用代码保护方法及系统和执行的提速方法及系统
US11120018B2 (en) Spark query method and system supporting trusted computing
CN103176807A (zh) 网页应用执行的提速方法及系统
KR101966754B1 (ko) 소프트웨어 코드의 생성 및 캐싱 기법
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
KR101545272B1 (ko) 안드로이드에서의 dex파일 바이너리 난독화 방법
US8090959B2 (en) Method and apparatus for protecting .net programs
CN106203006A (zh) 基于dex与so文件动态执行的Android应用加固方法
US20160357530A1 (en) Method and apparatus for intermediate representation of applications
CN108363911B (zh) 一种Python脚本混淆、水印的方法及装置
CN109948308A (zh) 代码安全保护方法、装置、电子设备和计算机可读存储介质
Prokhorenko et al. Context-oriented web application protection model
CN110309631B (zh) 一种编程语言结构混淆处理方法、智能终端及存储介质
CN113704706B (zh) 代码加固方法、装置
CN109241707A (zh) 应用程序的混淆方法、装置和服务器
CN102236698B (zh) 可嵌入的项目数据
CN105718764A (zh) 一种基于Android系统陷阱指令的软件加固方法
CN104462883A (zh) 一种apk文件加固的方法
Saxena et al. Scriptgard: Preventing script injection attacks in legacy web applications with automatic sanitization
Arasteh et al. Forensic memory analysis: From stack and code to execution history
Suk et al. SCORE: source code optimization & reconstruction
CN104573424A (zh) 一种应用程序保护系统和方法
Wang et al. Leveraging WebAssembly for numerical JavaScript code virtualization
CN110472425A (zh) 基于Mono的Unity插件加密方法、存储介质
KR101436741B1 (ko) 프로그램 보안 솔루션 적용 방법 및 시스템

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: SHENGDA NETWORK DEVELOPMENT CO., LTD., SHANGHAI

Free format text: FORMER OWNER: SHENGYUE INFORMATION TECHNOLOGY (SHANGHAI) CO., LTD.

Effective date: 20140605

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20140605

Address after: 201203 building 666, 1 Zhang Heng Road, Shanghai, Pudong New Area

Applicant after: Shanghai Shangda Networking Development Co., Ltd.

Address before: 201203 Shanghai Guo Shou Jing Road, Zhangjiang High Tech Park of Pudong New Area No. 356 building 3 Room 102

Applicant before: Shengle Information Technology (Shanghai) Co., Ltd.

C05 Deemed withdrawal (patent law before 1993)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130626