JavaScript保護(hù)密鑰的方法詳解
在前端js編程中,如果涉及到加密通信、加密算法,經(jīng)常會(huì)用到密鑰。
但密鑰,很容易暴露。 暴露原因:js代碼透明,在瀏覽器中可以查看源碼,從中找到密鑰。
例如,下面的代碼中,變量key是密鑰:
如何保護(hù)源碼中的密鑰呢?
很多時(shí)候,人們認(rèn)為需要對(duì)密鑰字符串進(jìn)行加密。其實(shí)更重要的是對(duì)存儲(chǔ)密鑰的變量進(jìn)行加密。
加密了密鑰變量,使變量難以找到,才更能保護(hù)密鑰本身。
順著這個(gè)思路,下面給出一個(gè)不錯(cuò)的密鑰的保護(hù)方法:
還是以上面的代碼為例,
首先,用到j(luò)sfuck:
https://www.jshaman.com/tools/jsfuck.html
將代碼中的密鑰定義整體,用jsfuck加密:
var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
加密后得到一串奇怪的字符,這是將變量“key ”以及密鑰字符“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”隱藏了起來(lái)。
注意:加密時(shí)需要選中“在父作用域中運(yùn)行”,選中之后,key 變量的定義雖然不存在,但變量key是可用的!(這點(diǎn)很神奇)。也就是雖然代碼中沒(méi)有定義這個(gè)變量,但這個(gè)變量存在,且可用。而且它存儲(chǔ)的就是密鑰!
用加密后的代碼替換掉原來(lái)的代碼,變成如下形式:
運(yùn)行效果:
即時(shí)他人拿走代碼去調(diào)試,也會(huì)顯示變量key未定義,如下圖所示:
但,這時(shí)候還不足夠安全,還能更安全。
將整體JS代碼,再用JS加密工具:JShaman,進(jìn)行混淆加密:
https://www.jshaman.com
然后得到更安全、更難調(diào)試分析的JS代碼,這時(shí)密鑰就變的更安全了:
注:用ajax等異步傳遞密鑰時(shí),也可以使用這個(gè)辦法,也能很好的隱藏密鑰。
用jsfuck+jshaman保護(hù)JS中的密鑰,你學(xué)會(huì)了嗎?
到此這篇關(guān)于JavaScript保護(hù)密鑰的方法詳解的文章就介紹到這了,更多相關(guān)JavaScript保護(hù)密鑰內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
element-ui?實(shí)現(xiàn)輸入框下拉樹組件功能
這篇文章主要介紹了element-ui?實(shí)現(xiàn)輸入框下拉樹組件功能,使用element-ui的?el-input,el-tree,el-popover組件組合封裝,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-05-05Javascript Cookie讀寫刪除操作的函數(shù)
Javascript Cookie讀寫刪除操作的函數(shù)代碼,需要操作cookies的朋友可以參考下。2010-03-03js去字符串前后空格5種實(shí)現(xiàn)方法及比較
如果寫到注冊(cè)的時(shí)候,用戶輸入空格,我們?cè)趺磥?lái)剔除空格呢,接下來(lái)與大家分享下經(jīng)常使用的js,感興趣的朋友可以參考下哈,希望可以幫助到你2013-04-04js 創(chuàng)建對(duì)象的多種方式與優(yōu)缺點(diǎn)小結(jié)
這篇文章主要介紹了js 創(chuàng)建對(duì)象的多種方式與優(yōu)缺點(diǎn),幫助大家更好的理解和學(xué)習(xí)使用JavaScript,感興趣的朋友可以了解下2021-03-03javascript中使用replaceAll()函數(shù)實(shí)現(xiàn)字符替換的方法
第一次發(fā)現(xiàn)JavaScript中replace()?方法如果直接用str.replace("-","!")?只會(huì)替換第一個(gè)匹配的字符.2010-12-12Javascript實(shí)現(xiàn)通過(guò)選擇周數(shù)顯示開始日和結(jié)束日的實(shí)現(xiàn)代碼
這篇文章主要介紹了Javascript實(shí)現(xiàn)通過(guò)選擇周數(shù)顯示開始日和結(jié)束日的實(shí)例代碼的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05