我知道每个人都使用TLS/SSL作为网络上的传输层安全性.
是什么阻止我手动生成密钥对,用该公钥加密数据客户端(例如使用JS)并使用http的GET/POST请求将数据提交给我的服务器?
我的意思是 - 我可以使用JS库来加密一些使用该公钥的表单数据 - 对吧?
只有拥有私钥的人才能解密 - 对吧?当然,私钥将保留在服务器上.不会弹出任何关键警告 - 因为传输是常规的http请求.那为什么我需要TLS?
您如何相信传递给浏览器的Javascript是使用正确密钥加密的Javascript?
考虑一下,并意识到安全最佳实践是非常微妙和微妙的,简单地将加密打顶不是一个解决方案.
此外,如果您正在处理"密钥弹出窗口",则使用未签名的服务器证书破坏了TLS信任模型(可信证书颁发机构)的一条腿.
让我们举一个例子来说明这可能会出错。假设您要加密的是某种表单数据并将其发送到服务器。服务器将其公钥发送给客户端进行加密。JavaScript 中的客户端加密该数据并将其发送到服务器。假设这就是发生的事情,那就没事了。
现在让我们探讨一下这是如何出错的。随着当今交换状态等的发展,在不访问硬件的情况下嗅探其他人的数据包是相当困难的。因此,您试图避免的大多数情况也允许攻击者进行中间人攻击。在这种情况下,攻击者可以向客户端提供他们喜欢的任何 JavaScript。窃取数据的一种秘密方式是提供 JavaScript,它可以执行原始 JavaScript 所做的所有操作,并且还将未加密的数据发送到另一台服务器。
对于从服务器发送到客户端的数据,这可以以类似的方式发生。
PS 如果您的问题是缺少 CA 签名的证书,我建议您从http://www.startssl.com/获取免费的证书
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |