首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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后期用自动方法去除最好。当然所有的安全措施都是要讲求权衡利弊,安全性和可维护性上根据实际需求来选择合适的方法和策略。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230319A013MG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券