JS代碼加密時,什麼情況下不能使用全局變量、函數名加密?
在進行JavaScript代碼混淆加密時,常會用到變量名、函數名混淆加密。
例如以下代碼:
使用JShaman進行JS代碼混淆加密:
配置中,不使用全局變量、全局函數加密:
得到加密代碼如下:
這時全局變量b,全局函數msg都保留了。保護後的代碼運作正常。
但如果加密時選擇了全局函數和變量加密:
則加密後的代碼運作會出現異常:
運作異常的原因是:JS代碼塊的外部,有click事件代碼,會調用全局變量和函數,如下圖:
總結而言:
如果代碼中的全局函數、全局變量,在代碼塊或檔案之外的地方有調用或指派。則不可以使用全局變量、全局函數加密。
除此之外,都可以使用全局變量、函數加密。
例如: