前端js中如何保护密钥?

news/2024/10/30 18:32:49/

前端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中的密钥,你学会了吗?


http://www.ppmy.cn/news/1543162.html

相关文章

Soanrquber集成Gitlab 之 gitlab用户配置和身份验证

集成Gitlab : gitlab用户配置和身份验证 说明: 使得Sonarquber的用户登录与Gitlab的用户登录/认证模块同步 什么是 SonarQube? SonarQube 是一个开源的代码质量管理平台,用于持续检查和分析代码的质量和安全性。它提供了多种功…

漏洞挖掘 | 基于mssql数据库的sql注入

前记 今天挖edu随意点开个站,发现存在mssql数据库的sql注入,在此分享下整个挖掘过程 目录 0x1 判断网站数据库类型 0x2 了解mssql数据库的主要三大系统表 0x3 了解mssql的主要函数 0x4 判断注入点及其注入类型 0x5 联合查询之判断列数 0x6 联合查询之…

C++ 在项目中使用vim

一:概述 除了掌握 Vim 的基本操作,利用 Vim 阅读项目源码的方法同样重要,这对实际项目开发大有裨益。虽然现在有许多人选择使用 VSCode,但在某些环境中,可能无法安装 VSCode 或联网下载插件,这时使用 Vim 就…

2023IKCEST第五届“一带一路”国际大数据竞赛--社交网络中多模态虚假 媒体内容核查top11

比赛链接:https://aistudio.baidu.com/competition/detail/1030/0/introduction PPT链接:https://www.ikcest.org/bigdata2024/zlxz/list/page.html 赛题 社交网络中多模态虚假媒体内容核查 背景 随着新媒体时代信息媒介的多元化发展,各种内容…

【verilog】四位全加器

文章目录 前言一、实验原理二、实验过程三、实验结果参考文献 前言 进行 FPGA 全加器 实验 一、实验原理 module adder(ain,bin,cin,cout,s); input ain,bin,cin; output cout,s; assign coutain&bin | ain&cin | bin&cin; assign sain^bin^cin; endmoduletimesc…

Matlab 车牌识别技术

1.1设计内容及要求: 课题研究的主要内容是对数码相机拍摄的车牌,进行基于数字图像处理技术的车牌定位技术和车牌字符分割技术的研究与开发,涉及到图像预处理、车牌定位、倾斜校正、字符分割等方面的知识,总流程图如图1-1所示。 图1-1系统总…

504 Gateway Time-outopenresty

504 Gateway Time-out openresty 问题背景: 当自己点开知乎页面以后,发现官网没有出现任何问题,点击官网以后开始出现各种各样的报错! 一下是来源ai的介绍:(通过搜索这种形式帮助自己进行记忆)…

HTML入门教程18:HTML类

一、定义类 在HTML中&#xff0c;你使用class属性来为元素分配类名。类名可以是任何你选择的名称&#xff0c;但最好使用能够描述元素用途或样式的名称。类名前面用一个点&#xff08;.&#xff09;表示&#xff0c;但在HTML中给元素分配类名时不需要这个点。 <div class&…