0
点赞
收藏
分享

微信扫一扫

JS代码加密时,什么情况下不能使用全局变量、函数名加密?

JS代码加密时,什么情况下不能使用全局变量、函数名加密?

在进行JavaScript代码混淆加密时,常会用到变量名、函数名混淆加密。

例如以下代码:

JS代码加密时,什么情况下不能使用全局变量、函数名加密?_全局变量

使用JShaman进行JS代码混淆加密:

JS代码加密时,什么情况下不能使用全局变量、函数名加密?_js代码_02

配置中,不使用全局变量、全局函数加密:

JS代码加密时,什么情况下不能使用全局变量、函数名加密?_js加密_03

得到加密代码如下:

JS代码加密时,什么情况下不能使用全局变量、函数名加密?_全局变量_04

这时全局变量b,全局函数msg都保留了。保护后的代码运行正常。

但如果加密时选择了全局函数和变量加密:

JS代码加密时,什么情况下不能使用全局变量、函数名加密?_js加密_05

则加密后的代码运行会出现异常:

JS代码加密时,什么情况下不能使用全局变量、函数名加密?_js加密_06JS代码加密时,什么情况下不能使用全局变量、函数名加密?_全局函数_07

运行异常的原因是:JS代码块的外部,有click事件代码,会调用全局变量和函数,如下图:

JS代码加密时,什么情况下不能使用全局变量、函数名加密?_js加密_08

总结而言:

如果代码中的全局函数、全局变量,在代码块或文件之外的地方有调用或赋值。则不可以使用全局变量、全局函数加密。

除此之外,都可以使用全局变量、函数加密。

例如:

JS代码加密时,什么情况下不能使用全局变量、函数名加密?_js混淆_09JS代码加密时,什么情况下不能使用全局变量、函数名加密?_js加密_10

保护后,全局变量b,全局函数msg都已不见,但运行完全不受影响,如下图:

JS代码加密时,什么情况下不能使用全局变量、函数名加密?_js加密_11

注:在JS混淆加密中,变量名加密、函数名加密,是绝对不可逆的操作,绝不可还原,能很大程度上提高代码安全性。因此:推荐使用。

举报

相关推荐

0 条评论