前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >前端js中如何保护密钥?

前端js中如何保护密钥?

原创
作者头像
用户8703799
发布2024-10-29 15:47:30
发布2024-10-29 15:47:30
16800
代码可运行
举报
文章被收录于专栏:javascript技术javascript技术
运行总次数:0
代码可运行

在前端js编程中,如果涉及到加密通信、加密算法,经常会用到密钥

但密钥,很容易暴露。暴露原因:js代码透明,在浏览器中可以查看源码,从中找到密钥。

例如,下面的代码中,变量key是密钥:

如何保护源码中的密钥呢?

很多时候,人们认为需要对密钥字符串进行加密。其实更重要的是对存储密钥的变量进行加密

加密了密钥变量,使变量难以找到,才更能保护密钥本身。

顺着这个思路,下面给出一个不错的密钥的保护方法:

还是以上面的代码为例,

首先,用到jsfuck:

代码语言:javascript
代码运行次数:0
复制
https://www.jshaman.com/tools/jsfuck.html

将代码中的密钥定义整体,用jsfuck加密:

代码语言:javascript
代码运行次数:0
复制
var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

加密后得到一串奇怪的字符,这是将变量“key ”以及密钥字符“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”隐藏了起来

注意:加密时需要选中“在父作用域中运行”,选中之后,key 变量的定义虽然不存在,但变量key是可用的!(这点很神奇)。也就是虽然代码中没有定义这个变量,但这个变量存在,且可用。而且它存储的就是密钥!

用加密后的代码替换掉原来的代码,变成如下形式:

运行效果:

即时他人拿走代码去调试,也会显示变量key未定义,如下图所示:

但,这时候还不足够安全,还能更安全。

将整体JS代码,再用JS加密工具:JShaman,进行混淆加密:

代码语言:javascript
代码运行次数:0
复制
https://www.jshaman.com

然后得到更安全、更难调试分析的JS代码,这时密钥就变的更安全了:

注:用ajax等异步传递密钥时,也可以使用这个办法,也能很好的隐藏密钥。

用jsfuck+jshaman保护JS中的密钥,你学会了吗?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档