我必须通过 JavaScript AJAX 调用、通过未加密的 channel (HTTP,而不是 HTTPS)传输一些敏感信息。
我想对数据进行加密,但 JavaScript 端的加密意味着我会公开 key ,这使得对称加密只是一种隐蔽性安全练习。
JavaScript有非对称加密吗?这样,我就可以对服务器解密 key 保密。 (我不担心Server > JavaScript消息的安全性,只担心某个JavaScript > Server消息的安全性)
最佳答案
您需要加密的原因可能是为了防止中间人攻击。在某些情况下,攻击者能够嗅探流量而无法更改它。该解决方案可以防范这种威胁,但对于能够修改流量的中间人来说,它根本无法提供任何保护。
如果攻击者可以更改流量,那么他还可以更改进行加密的脚本。最简单的攻击是从脚本中完全删除加密。如果你没有 https,并且中间人是可能的(几乎在所有情况下都是这种情况),那么你对最后呈现的 html 或 javascript 没有任何控制权用户。攻击者可能会完全重写您的 html 代码和 javascript、禁用加密、在表单中创建新的表单字段等。Https 是网络 channel 中安全通信的先决条件。
关于javascript - JavaScript 有非对称加密选项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6116883/