在 JavaScript 和 Web 服务器之间共享加密数据


  1. 我有一个基于 REST API 的 Rails WebServer
  2. 我有一个AngularJS应用程序,它连接到这个网络服务器

在客户端加密登录名和密码并在服务器端解密这些凭据的最佳方法是什么?

如果您使用的是 RSA,则必须在浏览器中拥有密钥。 密钥无法进入浏览器,除非它们通过不安全的 HTTP 连接。 如果攻击者通过嗅探 HTTP 连接和 javascript 代码中的算法来获得密钥,那么您不会保护任何东西,因为解密您的流量变得微不足道。

我建议在你的网络服务器前面放一个nginx代理。 您可以配置nginx进行TLS握手,并且每年只需不到15美元即可获得Comodo SSL证书。 我自己在Python服务器前完成了这项工作,真的,这就是它的全部成本。

当我在客户端存储公共服务器密钥和在服务器端存储私有服务器密钥时,我刚刚决定使用 http://travistidwell.com/jsencrypt/index.html 的方式。

JS客户端对发送到服务器的所有消息进行加密。

正如Geoff Genz所提到的,最好的方法是使用HTTPS保护您的Web服务器,并确保您的登录操作仅接受通过HTTPS的请求。配置您的角度应用程序以向登录操作的HTTPS URL发出请求,所有加密都将无缝处理。您不必担心手动加密数据客户端,然后解密服务器端。所有这些都将由使HTTPS工作的TLS协议处理。

最新更新