Web 前端密码加密是否有意义?

问题是:使用硬编码密钥的对称加密。

实用提醒:使用动态密钥或非对称加密,并使用成熟的加密库。

html5文件如何实现加密与解密 html5文件前端加密的安全实践

说白了,HTML5 前端加密的核心是“数据加密文化+代码混淆+密钥隔离”三管齐下,可以有效防止反向反射,但并不完全安全。

扩展:首先使用AES加密关键数据。
比如我们去年跑的电商项目,用户的优惠券信息用CryptoJS加密后存储在localStorage中,直接节省了后端的压力。
但有一个非常重要的细节——解密必须动态进行。
去年有一个项目掉进了陷阱。
静态分析工具像普通JS一样直接读取解密文本,雪崩效应直接爆炸。
还有一点是密钥不能被硬编码。
去年,我们使用 Web Crypto API 动态生成 AES-GCM 密钥并与 HTTPS 传输配合。
它在 3 ,000 名每日活跃用户上运行,没有出现任何问题。

思想痕迹:一开始我以为把key存放在localStorage是安全的,后来发现是错误的。
它们可以通过任何跨域请求被盗。
等等,还有别的事。
加密资源文件时,要注意生命周期。
有一个项目是直接将Base64 编码的视频转为JS。
结果setTimeout设置了5 秒才被释放,浏览器内存爆炸。

最后,提醒一下,加载动态资源是个好主意,但请记住使用引用者来检查热链接。
很多人不注意这一点。

前端使用JSEncrypt给登录密码加密

嗯……2 02 2 年前端加密密码真是费劲了。

首先说一下后端。
2 02 2 年,后端获得了公私钥对。
这不是偶然的,而是 RSA 算法。
然后我们将公钥通过接口传递给前端。
有时公钥写在网页上,有时通过 API 动态提供。
无论如何,前端应该得到这个。

然后是前端。
例如,您将在 2 02 2 年成为 Vue 开发人员。
运行 npm install JSEncrypt。
拉下那个图书馆。
将其放入您的项目中。
有时你把它放在一个组件中。
例如Login.vue。

这是关键。
获取后端的公钥并使用 JSEncrypt。
编写使用公钥加密用户密码的代码,例如“1 2 3 4 5 6 ”。
加密后,就只是一长串扭曲的字符串。
有时包含空格或特殊字符。
如果传给后端时解析不正确,就会结束。

因此,您必须使用encodeURIComponent。
转换加密字符串。
确保所有字符都转换为 URL 可以识别的格式。
然后将转换后的字符串打包。
例如,将其放在 POST 请求的正文中:传递到后端。

后端接收到请求,首先进行解码。
使用decodeURIComponent。
再次转换转换后的字符串。
然后后端使用私钥对其进行解密。
使用 RSA 私钥。
解密用户的原始密码。
解密完成后,检查数据库中保存的密码。
如果验证通过,则会生成令牌。
什么是智威汤逊?无论如何,事情就是这样。
生成一个令牌并将其提供给前端。
确保将其保存在前端。
请在下次请求时携带此令牌。

是的。
这就是 2 02 2 年将会发生的事情。