网站首页 > java教程 正文
日常中常常会遇到线上的环境被第三方安全厂商扫出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基本结构和功能有:
解析器:实现从JavaScript代码生成抽象语法树(AST) 。
代码生成器:用来生成经过AST的JavaScript代码,还提供了获取代码的源图。
压缩器(优化器):提供转化API将AST代码优化为更小代码。
Mangler:用来将本地变量重命名为单个字母变量。
范围分析器:用来使用有关变量位置的信息扩充AST定义/引用等
树遍历器:一个简单的API实现对AST树节点的访问和操作。
树转换器:用来实现对AST树改造的API。
UglifyJS支持在线试用:
lisperator.net/uglifyjs
仓库地址github/mishoo/UglifyJS
UglifyJS还提供了对常见JS项目的优化效果,对比了UgilfyJS,Closure、Esmangel等工具的效果。
Obfuscator
Obfuscator是一个在线的JavaScript代码混淆工具,可以将 JavaScript 代码转换为难以理解和修改的形式,从而提高代码的安全性和保密性。虫虫在之前使用过程中,Obfuscator是混淆效果最好的工具,但是这个工具不是用JS开发的,是用C#开发的工具,提供免费工具和收费的专业版工具。
Obfuscator支持在线使用:
javascriptobfuscator.com/Javascript-Obfuscator.aspx
也支持免费工具下载,可以在桌面批量下进行转化。
Closure Compiler
Closure Compiler 是由谷歌开源的一个JavaScript代码压缩和混淆工具。Closure Compiler用Java开发,可以将JavaScript代码压缩为更小的体积,并且可以进行变量名混淆、函数名混淆、代码重构等操作,目前谷歌Closure Compiler在线服务已经停止,需要使用的话需要自己本地部署使用:
github.com/google/closure-compiler/
总结
当然以上这些方法,都是只针对线上生产环境中使用JS代码而已的,在开发环境中由于可能会对代码的可读性和维护性造影响,所以不建议不用注释,可以在CI/CD后期用自动方法去除最好。当然所有的安全措施都是要讲求权衡利弊,安全性和可维护性上根据实际需求来选择合适的方法和策略。
猜你喜欢
- 2024-11-08 Java 程序员排行前 10 的错误,你有没有中?
- 2024-11-08 常见面试题之java系列(面试题目java)
- 2024-11-08 Android混淆相关(apk混淆)
- 2024-11-08 Java零基础知识必备「分层概念」(java分层领域模型 太麻烦)
- 2024-11-08 Java面试题分享(java面试题精选)
- 2024-11-08 Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)
- 2024-11-08 JS加密:JavaScript代码加密混淆(js代码加密原理)
- 2024-11-08 Java一键授权方案 离线授权 日期授权 代码授权 代码混淆
- 2024-11-08 Java 基础 - 类与对象(java中类和对象)
- 2024-11-08 Java开发者易犯错误Top10(java: 错误: 不支持发行版本 7)
你 发表评论:
欢迎- 05-23Java线程池:核心参数与最佳实践
- 05-23深入理解 Java 的线程池原理
- 05-23面试突击34:如何使用线程池执行定时任务?
- 05-23Java线程池核心参数调优指南:掌控并发世界的钥匙
- 05-23Java线程池:优雅管理并发任务的艺术
- 05-23一篇文章快速搞懂Java中常用的四种线程池
- 05-23Java线程池工作原理深度解读:从创建到任务执行的全过程
- 05-23一文看懂:Java线程池任务拒绝机制解析
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)