前端怎么对请求参数做加密才安全?

雨涵 阅读 2

我在做登录功能,想把用户密码在发给后端前加密一下,但不知道用啥方式才靠谱。试过用 crypto-js 做 AES 加密,但密钥写在前端代码里感觉很容易被扒出来,这样加密还有意义吗?

现在后端要求所有敏感请求都要加密,但我又不能直接传明文。有没有既安全又适合前端实现的方案?比如能不能结合 HTTPS 再加一层简单处理?

这是我现在用的加密代码:

import CryptoJS from 'crypto-js';

const key = 'my-secret-key-123'; // 这个写死在前端太危险了吧?
const encrypted = CryptoJS.AES.encrypt(password, key).toString();
我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
ლ嘉蕊
ლ嘉蕊 Lv1
前端加密确实是个头疼的问题,特别是密码这种敏感数据。写死密钥在前端代码里确实不安全,任何人都能通过调试工具看到。

更好的写法是完全不要在前端进行对称加密。HTTPS本身已经帮你做了传输加密,你只需要保证后端的密码存储安全就行了。

建议这样处理:
1. 继续使用 HTTPS 传输密码明文
2. 后端收到密码后立刻用 bcrypt 等算法加盐哈希存储

如果非要再加一层加密,可以考虑非对称加密:

// 前端用公钥加密
function encryptWithPublicKey(password, publicKey) {
const encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
return encrypt.encrypt(password);
}

公钥可以从后端动态获取,安全性会好很多。不过说实话,这层加密很多时候是多余的操作,反而增加了维护成本。

记住一点:安全不能只靠前端来保证,后端的安全设计才是重点。前端该做的就是确保用了 HTTPS,剩下的交给后端去处理吧。每天都在和这些安全问题斗智斗勇,真的挺累的。
点赞
2026-03-30 20:27