我有一个带有基于令牌的身份验证的Rails JSON API,以及一个使用Backbone.js的静态前端客户端(由不同的Rails服务器提供)。
我正在考虑如何保护前端和API之间的通信,因为在注册/登录期间将从浏览器表单发送纯文本凭据,并且在每个请求的Authorization标头中发送auth令牌。
我想在Rails API服务器上强制使用SSL(使用nginx或Puma / Passenger配置)。
我的理解是否正确,只要通过HTTPS从浏览器前端应用程序调用,从运行JS代码的浏览器到Rails API的连接将被加密?
我是否需要一个机构签署的证书,或者一个自签名证书就足够了?由于实际的前端代码是从与API不同的服务器(很可能不使用HTTPS)提供的,并且只有来自JS代码的REST调用(假设)是安全的,我是否可以获得温暖且模糊的URL条锁定这个场景?
答案 0 :(得分:1)
两者都对犯罪分子有效,但如果浏览器本身调用了API,则自签名将导致问题。例如,你不能告诉jQuery建立一个基于自签名证书的ssl连接,所以它不会工作。如果您只将API服务器端与您自己的库一起使用,则可以实现库停用证书验证的可能性。
从安全性看,自签名证书migth甚至更安全,因为只有您拥有私钥。当您从授权书中收到证书时,他们将保留私钥的副本。所以政府可以去当局,强迫他们给他们钥匙。
//如果你想强制使用ssl,即使在" normal"您可以使用此处所述的重定向执行此操作:https://serverfault.com/questions/250476/how-to-force-or-redirect-to-ssl-in-nginx