chatGPT推荐的JS代码混淆方法
日常中常常会遇到线上的环境被第三方安全厂商扫出JS信息泄露的漏洞,让你整改。往往这会让小伙伴一头雾水,不知道如何整改,其实JS这类漏洞的整改也很简单。
再次虫虫给大家推荐几种可行的方法,其中有一种JS代码混淆的方法是使chatGPT推荐的。
在线上环境中,去除掉JS代码中的所有注释。虽然注释可以增加代码可读性,在开发和协作交流中必不可少,但是在线上环境中却纯属多余,还会暴露代码中一些信息,让人容易到到攻击的方法,这也是JS信息泄露的最主要方面。除了整改去除线上环境中涉及代码注释外,可以将这一条增加到开发的CI/CD流程中,在流程中怎么一个自动化去除注释的步骤,以后就可以一劳永逸了。
就是开发中,对一些变量做一些特殊命名,比如用户就不要命名为user;password就不要用password,pass,passwd等;手机号,不用phone,phonenumber等;还有ID,address等也注意命名,这样避开这些名称(可以对这些名称加密、代码分割),就不会被扫描到了。
如果项目中确实无法使用1,2,那就来第三种方法JS代码混淆,相关可以自己搜索,下面给大家推荐chatGPT推荐的方法(切实前三个工具都是虫虫用过的,都挺好用的):
JavaScript 代码混淆是一种常用的代码保护技术,可以将 JavaScript 代码转换人们不好理解和修改的形式,从而提高代码的安全性和保密性。下面是一些常用的 JavaScript 代码混淆工具和技术:
UglifyJS是最流行JS代码压缩和混淆工具,使用原生JS代码开发,一方面可以通过JS代码压缩,减少源代码的体积,UglifyJS支持对JS代码做变量混淆、函数混淆、代码重构等功能。
UglifyJS基本结构和功能有:
解析器:实现从JavaScript代码生成抽象语法树(AST) 。
代码生成器:用来生成经过AST的JavaScript代码,还提供了获取代码的源图。
压缩器(优化器):提供转化API将AST代码优化为更小代码。
Mangler:用来将本地变量重命名为单个字母变量。
范围分析器:用来使用有关变量位置的信息扩充AST定义/引用等
树遍历器:一个简单的API实现对AST树节点的访问和操作。
树转换器:用来实现对AST树改造的API。
UglifyJS支持在线试用:
仓库地址github/mishoo/UglifyJS
UglifyJS还提供了对常见JS项目的优化效果,对比了UgilfyJS,Closure、Esmangel等工具的效果。
Obfuscator是一个在线的JavaScript代码混淆工具,可以将 JavaScript 代码转换为难以理解和修改的形式,从而提高代码的安全性和保密性。虫虫在之前使用过程中,Obfuscator是混淆效果最好的工具,但是这个工具不是用JS开发的,是用C#开发的工具,提供免费工具和收费的专业版工具。
Obfuscator支持在线使用:
也支持免费工具下载,可以在桌面批量下进行转化。
Closure Compiler 是由谷歌开源的一个JavaScript代码压缩和混淆工具。Closure Compiler用Java开发,可以将JavaScript代码压缩为更小的体积,并且可以进行变量名混淆、函数名混淆、代码重构等操作,目前谷歌Closure Compiler在线服务已经停止,需要使用的话需要自己本地部署使用:
当然以上这些方法,都是只针对线上生产环境中使用JS代码而已的,在开发环境中由于可能会对代码的可读性和维护性造影响,所以不建议不用注释,可以在CI/CD后期用自动方法去除最好。当然所有的安全措施都是要讲求权衡利弊,安全性和可维护性上根据实际需求来选择合适的方法和策略。
看一段js是否存在流氓行为或漏洞?反混淆出场,建议收藏
当开发者或安全研究人员想了解一个web应用下的js是否存在漏洞,流氓行为,以及是否由侵权及不合规问题时,往往发现遇到的js已经被混淆加密了,非常难以阅读,甚至看起来像天书。这个时候要么放弃,要么作为有追求的大佬可能想到将这个js代码进行反混淆,目的是让代码重新变得容易阅读。网上人们所说的Javascript DeObfuscator 都是指对JavaScript 代码混淆并消除混淆的描述。 就如前面所说的一样,它对 JavaScript 混淆代码进行重新编码,将其恢复为原始代码。
一个简单但功能强大的反混淆器,用于消除常见的 JavaScript 混淆技术和工具,它主要采取以下原理:
1.解压包含文字(字符串、数字等)的数组并替换对它们的所有引用
2.删除简单代理函数(调用另一个函数)、数组代理函数和算术代理函数(二进制表达式)
3.简化算术表达式
4.简化字符串连接
5.重命名不可读的十六进制标识符(例如 _0xca830a)
6.将计算转换为静态成员表达式并美化代码
deobfuscate.io反混淆
反混淆过程中支持:特征检查 ,字面量可视化, 简化重复值, 控制流复原, 删除死代码, 强制删除死代码等多种处理模式和选项。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。