使用SSL / TLS保护前端JS应用程序和Rails API通信

时间:2015-05-11 05:27:55

标签: ruby-on-rails security rest ssl backbone.js

我有一个带有基于令牌的身份验证的Rails JSON API,以及一个使用Backbone.js的静态前端客户端(由不同的Rails服务器提供)。

我正在考虑如何保护前端和API之间的通信,因为在注册/登录期间将从浏览器表单发送纯文本凭据,并且在每个请求的Authorization标头中发送auth令牌。

我想在Rails API服务器上强制使用SSL(使用nginx或Puma / Passenger配置)。

我的理解是否正确,只要通过HTTPS从浏览器前端应用程序调用,从运行JS代码的浏览器到Rails API的连接将被加密?

我是否需要一个机构签署的证书,或者一个自签名证书就足够了?由于实际的前端代码是从与API不同的服务器(很可能不使用HTTPS)提供的,并且只有来自JS代码的REST调用(假设)是安全的,我是否可以获得温暖且模糊的URL条锁定这个场景?

1 个答案:

答案 0 :(得分:1)

  1. 当您建立https连接时,您可以通过两种方式加密流量。
  2. 如果您使用自签名证书或由verisign签名的证书,则依赖于您的目的和API的使用。
  3. 两者都对犯罪分子有效,但如果浏览器本身调用了API,则自签名将导致问题。例如,你不能告诉jQuery建立一个基于自签名证书的ssl连接,所以它不会工作。如果您只将API服务器端与您自己的库一起使用,则可以实现库停用证书验证的可能性。

    从安全性看,自签名证书migth甚至更安全,因为只有您拥有私钥。当您从授权书中收到证书时,他们将保留私钥的副本。所以政府可以去当局,强迫他们给他们钥匙。

    //如果你想强制使用ssl,即使在" normal"您可以使用此处所述的重定向执行此操作:https://serverfault.com/questions/250476/how-to-force-or-redirect-to-ssl-in-nginx