JavaScript代码加密的研究背景与行业意义

发布于 4 小时前  1 次阅读


JavaScript在应用的早期主要处理一些页面内容修改和表单提交等简单操作,代码结构简单,安全需求不高。而伴随着网络和浏览器性能的提高,前端JavaScript应用也越来越丰富多样化,其执行能力和性能的增强,也使得更多的重要逻辑从后端转向前端。同时这也意味着,JS加密的工作变得越来越重要,并且其自身的安全问题和安全需求也就越加紧迫。

人机验证中的JavaScript安全

在许多涉及登录注册以及安全支付和交易的前端页面中,都依赖JavaScript脚本来实现交互过程中的安全需求。比如用户在交易支付页面完成交互时,前端JavaScript实现的安全代码会对用户的行为进行特征数据采集,加密重组后上传,然后分析比对固有的行为特征,识别是否存在机器行为并及时执行交互过程的阻断。JavaScript代码在人机验证中起到了重要的作用,一旦恶意用户破解了前端代码的加密手段,逆向分析出执行逻辑,往往可以伪造数据将自己模拟成一个正常用户,绕过安全验证进而达到其恶意的目的。

前端安全的挑战

随着电商等服务的高速发展,也衍生了大量的恶意注册、刷单等借助技术手段获利的黑色产业。构建安全可信的前端交互环境,首先需要保障输入数据的安全和可靠,鉴别来自用户的消息和数据的真实性。但是,前端浏览器作为一个开放的平台,采集数据的主要手段JavaScript代码是直接暴露的,很难阻止恶意用户通过分析代码、伪造数据来获利。因此,在前端安全对抗中,JavaScript代码安全的重要性日益凸显。

现有保护方法的局限

目前主流的JavaScript代码保护措施主要为精简、加密和混淆,这些方法的核心思想主要借鉴传统的软件代码保护技术。而JavaScript属于脚本语言,在传输过程中就是带有语法属性的文本源码,逆向分析要比传统的经过编译的二进制应用程序更加容易,再加上浏览器性能的发展,调试器的功能越来越完善,这些保护方法很难起到很好的保护效果。

基于WebAssembly的虚拟化保护

针对目前JavaScript代码保护方法存在的缺陷,我们提出一种基于WebAssembly的JavaScript代码虚拟化保护方法。该方法借鉴二进制代码保护中的代码虚拟化保护思想,设计实现一种针对JavaScript代码的虚拟化保护方案,基于抽象语法树(AST)对目标代码进行特殊的指令拆分和自定义的虚拟化处理,然后基于WebAssembly编译实现特定的虚拟解释器,在执行时解释还原目标代码的语义和逻辑。通过虚拟机保护技术隐藏JavaScript代码的执行逻辑,阻止目标代码的核心功能和逻辑结构被恶意的分析和使用,满足目前前端攻防环境下的关键JavaScript应用的安全需求。

来源:JSVMP一键加密平台


点击体验一键VMP加密 |下滑查看JSVMP相关文章