日常中常常会遇到线上的环境被第三方安全厂商扫出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
UglifyJS是最流行JS代码压缩和混淆工具,使用原生JS代码开发,一方面可以通过JS代码压缩,减少源代码的体积,UglifyJS支持对JS代码做变量混淆、函数混淆、代码重构等功能。
UglifyJS基本结构和功能有:
UglifyJS还提供了对常见JS项目的优化效果,对比了UgilfyJS,Closure、Esmangel等工具的效果。
解析器:实现从JavaScript代码生成抽象语法树(AST) 。
代码生成器:用来生成经过AST的JavaScript代码,还提供了获取代码的源图。
压缩器(优化器):提供转化API将AST代码优化为更小代码。
Mangler:用来将本地变量重命名为单个字母变量。
范围分析器:用来使用有关变量位置的信息扩充AST定义/引用等
树遍历器:一个简单的API实现对AST树节点的访问和操作。
树转换器:用来实现对AST树改造的API。
UglifyJS支持在线试用:
仓库地址
Obfuscator
Obfuscator是一个在线的JavaScript代码混淆工具,可以将 JavaScript 代码转换为难以理解和修改的形式,从而提高代码的安全性和保密性。虫虫在之前使用过程中,Obfuscator是混淆效果最好的工具,但是这个工具不是用JS开发的,是用C#开发的工具,提供免费工具和收费的专业版工具。
Obfuscator支持在线使用:
也支持免费工具下载,可以在桌面批量下进行转化。
Closure Compiler
Closure Compiler 是由谷歌开源的一个JavaScript代码压缩和混淆工具。Closure Compiler用Java开发,可以将JavaScript代码压缩为更小的体积,并且可以进行变量名混淆、函数名混淆、代码重构等操作,目前谷歌Closure Compiler在线服务已经停止,需要使用的话需要自己本地部署使用:
总结
当然以上这些方法,都是只针对线上生产环境中使用JS代码而已的,在开发环境中由于可能会对代码的可读性和维护性造影响,所以不建议不用注释,可以在CI/CD后期用自动方法去除最好。当然所有的安全措施都是要讲求权衡利弊,安全性和可维护性上根据实际需求来选择合适的方法和策略。
领取专属 10元无门槛券
私享最新 技术干货