保护 front-end JS 应用程序和 Rails API 与 SSL/TLS 的通信
Securing front-end JS app and Rails API communication with SSL/TLS
我有一个 Rails JSON API 使用基于令牌的身份验证,以及一个使用 Backbone.js 的静态 front-end 客户端(由不同的服务器提供Rails 服务器)。
我正在考虑如何保护 front-end 和 API 之间的通信,因为纯文本凭据将在 signup/login 期间从浏览器表单发送,并且身份验证每次请求时,都会在授权 header 中发送令牌。
我正在考虑在 Rails API 服务器上强制使用 SSL(使用 nginx 或 Puma/Passenger 配置)。
我的理解是否正确,只要通过 HTTPS 从浏览器 front-end 应用程序调用,从浏览器 运行 JS 代码到 Rails 的连接API会被加密吗?
我需要权威机构的签名证书,还是 self-signed 就足够了?由于实际的 front-end 代码是从与 API 不同的服务器提供的(很可能不使用 HTTPS),并且只有来自 JS 代码的 REST 调用(据说)是安全的,我能得到温暖吗在这种情况下模糊 URL 栏锁?
- 当您建立 https 连接时,您有权以两种方式加密流量。
- 如果您使用自签名证书或由 verisign 签名的证书,例如取决于您的目的和使用 API。
两者都对犯罪分子有效,但如果 API 被浏览器本身调用,自签名会导致问题。例如,您无法告诉 jQuery 建立基于自签名证书的 ssl 连接,因此它不会工作。如果您仅将 API 服务器端与您自己的库一起使用,它会意识到库停用证书验证的可能性。
从安全性来看,自签名证书可能更安全,因为只有您拥有私钥。当您从权威机构收到证书时,他们将保留私钥的副本。所以政府可以去找当局,强迫他们把钥匙给他们。
// 如果你想在 "normal" 页面上强制使用 ssl,你可以使用这里描述的重定向来做到这一点:https://serverfault.com/questions/250476/how-to-force-or-redirect-to-ssl-in-nginx
我有一个 Rails JSON API 使用基于令牌的身份验证,以及一个使用 Backbone.js 的静态 front-end 客户端(由不同的服务器提供Rails 服务器)。
我正在考虑如何保护 front-end 和 API 之间的通信,因为纯文本凭据将在 signup/login 期间从浏览器表单发送,并且身份验证每次请求时,都会在授权 header 中发送令牌。
我正在考虑在 Rails API 服务器上强制使用 SSL(使用 nginx 或 Puma/Passenger 配置)。
我的理解是否正确,只要通过 HTTPS 从浏览器 front-end 应用程序调用,从浏览器 运行 JS 代码到 Rails 的连接API会被加密吗?
我需要权威机构的签名证书,还是 self-signed 就足够了?由于实际的 front-end 代码是从与 API 不同的服务器提供的(很可能不使用 HTTPS),并且只有来自 JS 代码的 REST 调用(据说)是安全的,我能得到温暖吗在这种情况下模糊 URL 栏锁?
- 当您建立 https 连接时,您有权以两种方式加密流量。
- 如果您使用自签名证书或由 verisign 签名的证书,例如取决于您的目的和使用 API。
两者都对犯罪分子有效,但如果 API 被浏览器本身调用,自签名会导致问题。例如,您无法告诉 jQuery 建立基于自签名证书的 ssl 连接,因此它不会工作。如果您仅将 API 服务器端与您自己的库一起使用,它会意识到库停用证书验证的可能性。
从安全性来看,自签名证书可能更安全,因为只有您拥有私钥。当您从权威机构收到证书时,他们将保留私钥的副本。所以政府可以去找当局,强迫他们把钥匙给他们。
// 如果你想在 "normal" 页面上强制使用 ssl,你可以使用这里描述的重定向来做到这一点:https://serverfault.com/questions/250476/how-to-force-or-redirect-to-ssl-in-nginx