在前端js編程中,如果涉及到加密通信、加密算法,經常會用到密鑰。
但密鑰,很容易暴露。暴露原因:js代碼透明,在瀏覽器中可以查看源碼,從中找到密鑰。
例如,下面的代碼中,變量key是密鑰:
如何保護源碼中的密鑰呢?
很多時候,人們認為需要對密鑰字符串進行加密。其實更重要的是對存儲密鑰的變量進行加密。
加密了密鑰變量,使變量難以找到,才更能保護密鑰本身。
順著這個思路,下面給出一個不錯的密鑰的保護方法:
還是以上面的代碼為例,
首先,用到jsfuck:
https://www.jshaman.com/tools/jsfuck.html
將代碼中的密鑰定義整體,用jsfuck加密:
var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
加密后得到一串奇怪的字符,這是將變量“key ”以及密鑰字符“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”隱藏了起來。
注意:加密時需要選中“在父作用域中運行”,選中之后,key 變量的定義雖然不存在,但變量key是可用的!(這點很神奇)。也就是雖然代碼中沒有定義這個變量,但這個變量存在,且可用。而且它存儲的就是密鑰!
用加密后的代碼替換掉原來的代碼,變成如下形式:
運行效果:
即使他人拿走代碼去調試,也會顯示變量key未定義,如下圖所示:
但,這時候還不足夠安全,還能更安全。
將整體JS代碼,再用JS加密工具:JShaman,進行混淆加密:
https://www.jshaman.com
然后得到更安全、更難調試分析的JS代碼,這時密鑰就變的更安全了:
注:用ajax等異步傳遞密鑰時,也可以使用這個辦法,也能很好的隱藏密鑰。
用jsfuck+jshaman保護JS中的密鑰,你學會了嗎?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.