前端加密真能防抓包吗?为什么我加密了还是被看到明文?
最近在做登录功能,听说前端加密能防止密码被抓包看到,我就用 crypto-js 对密码做了 AES 加密再传给后端。但用 Charles 抓包一看,发现请求里的密文虽然看不懂,可我在浏览器控制台里随便打断点,就能看到原始密码变量,感觉根本没用啊?
是我加密方式不对,还是说前端加密本来就没意义?有没有真正安全的做法?
const encrypted = CryptoJS.AES.encrypt(password, 'my-secret-key').toString();
fetch('/login', {
method: 'POST',
body: JSON.stringify({ pwd: encrypted })
});
一般这样处理:首先,前端加密只是增加了一层混淆,不能依赖它来保证安全。真正的敏感数据应该在后端进行加密或签名。其次,可以考虑使用HTTPS来加密传输过程中的数据,防止中间人攻击。
至于你的代码,看起来没啥大问题,但关键是理解加密的局限性。你可以在后端进一步处理密码,比如加盐后再哈希存储。这样即使有人截获了密文,也很难破解出原始密码。
总之,前端加密不是银弹,要结合其他安全措施一起使用才行。