JavaScript代码混淆加密
前言:众所周知,JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看,如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制你的劳动成果,所以给大家介绍一下新出的代码混淆加密工具 safekodo。 网址为www.safekodo.com
safekodo混淆加密的几种类型
)
如上述图片所示,safekodo提供的加密有:JavaScript代码加密、动态加密、多文件加密、API方式加密 等几种方案。
JavaScript代码加密
JavaScript代码加密为最常用的加密方式 ,可以在此处加密适用于网页端或者NODEJS的js代码,配置如下图所示(配置介绍将在下方进行阐述)
因为是演示所以就以官网提供的模板代码为例进行加密
下图为加密后的代码:
运行
在html中引入使用 并测试禁止调试 屏蔽f12等
参数介绍
- 首先可以看到“性能配置”有三个选项,建议是如果代码非常注重安全,且对性能要求较低时选择“最强加密”、如果对代码性能要求很高时选择“最佳性能”,当然也可以选择折中方案即“均衡加密”
- 基本配置
- 迷惑代码注入(向提交的代码中注入迷惑代码块,用于迷惑干扰解密)
- 剔除console函数(剔除console函数,使得控制台无法通过console函数输出)
- 屏蔽键盘F12 (屏蔽浏览器的F12键,配合“禁用控制台调试”使用,以防止在配置了“禁用控制台调试”后正常用户误触导致F12导致浏览器卡死的情况)
- 进阶配置
- 控制流扁平化(将代码结构改变,使得程序的逻辑复杂不易分析,大幅增加解密难度。)
- 禁用控制台调试(开启后无法通过控制台进行代码调试)
- 禁止代码格式化(开启后代码在格式化后将无法正常运行,如果开启了此配置导致代码无法运行请查看底部说明进行排除 )
- 混淆更改变量名、函数名(勾选后提交的代码中的函数名变量名,会被混淆。如涉及到多个js文件间的相互调用,请谨慎使用该功能。或在下方添加名称保留字)
- 高级配置
- 代码运行环境 【可选浏览器 || NODE】
- 运行在非指定域名时【可选:禁止运行代码 || 跳转至指定网址】注意:此选项只有在添加了锁定域名时才可使用
- 域名锁定:添加后只能在指定的域名内运行,多个子域名支持统一配置、支持前端通配符,如 *.safekodo.com
- 名称保留字:当勾选了混淆变量函数名后,对于不想被混淆的变量名、函数名可在此处添加
- 运行时间锁定:运行时间锁定,锁定后代码仅在指定时间段内可以运行 如果勾选该选项默认为一年
动态加密
### 动态加密
动态加密仅适用于web端js加密,需要上传一个js文件,加密后获得一个以script方式引入的script标签
您可直接在项目中粘贴引用,这样每次访问该网站时script标签引入的js都将是不同的且为加密后的js文件,从而达到动态加密的效果
动态加密运行示例
参数介绍
与JavaScript代码加密 不同的是 高级配置中 引用方式可选 https || http
多文件加密
将多个js文件压缩为zip格式的压缩包 提交加密即可此处不演示了~ _ ~
API方式加密
以api形式发送post请求加密即可此处不演示了~ _ ~
特别注意事项
- 当您使用safekodo 加密后代码运行出错错误类型为Uncaught ReferenceError: xxx is not defined。首先需要排除的是配置项中是否勾选了“混淆更改变量名、函数名”。如果勾选了此配置,可尝试取消勾选。或在“名称保留字”配置中添加。也可以修改未加密的js代码,将该方法或者变量定义为全局的。
- 当您使用safekodo 加密后代码运行遇到无缘无故的运行无报错但也无效果时,首先要看的是是否允许在了指定的(即您配置的锁定域名)域名上运行。其次需要排查是否配置了运行时间锁定,如若配置了,请排查是否在配置的时间内运行。
- 当您使用safekodo 加密后代码运行浏览器出现了卡死情况,请先排除是否配置了“禁用控制台调试”,在配置了该参数的情况下请排除是否开启了浏览器控制台,如若开启,请先关闭控制台,其次排除是否配置了“域名锁定”,并在该域名下运行代码。
- 当您排除了以上情况,代码仍然无法运行或报的错误为其他情况时,请查看是否配置了“禁止代码格式化”,如果排除了是该配置导致的无法运行时,解决方案有两个:1、您可根据情况选择不使用该配置。2、当您仍需使用该配置时,在加密完代码后,粘贴到您的文件时需要注意如果您的开发者工具(例如您使用的是VSCode)如果设置了保存格式化时,请使用记事本或选择不会自动格式化代码的IDE打开文件进行代码粘贴,因为您的开发者工具在您粘贴后可能会自动进行格式化,导致代码无法运行!这个是比较容易出现的状况!