ruby-on-rails - 使用 https 保护 Rails API

标签 ruby-on-rails ruby-on-rails-3 api ssl https

我正在创建我的第一个 API 并使用 Ruby on Rails。 API 将严格是服务器到服务器。我做了很多 reading关于保护此类 API 的方法,并决定使用 https 可能是最简单的方法,而不是 Oauth。

附加信息:

  • API 非常简单且只读
  • 我提供的数据并不便宜,我需要向我们的数据提供商和合作伙伴证明 API 是安全的,他们的数据将受到保护免遭盗窃。这是我需要保护它的唯一原因。

我最初的计划是简单地使用将通过 https 发送的私钥。我不需要担心客户端共享此 key ,因为它们是根据使用情况计费的。

我的问题是如何在客户端服务器上强制使用 https?除了要求 API 路由使用 https 协议(protocol)外,我还需要做其他事情吗?

最佳答案

HTTPS 只做两件事: * 让您感觉您正在与正确的服务器通信 * 使用加密来防止窃听和篡改。

不会限制对您的 API 的访问。对敏感数据使用 HTTPS 是必须的,所以使用它。您可以将前端服务器(例如 nginx)设置为仅使用 SSL(例如,不要配置端口 80/HTTP)。在这里阅读更多:http://ariejan.net/2011/10/22/automatically-switch-between-ssl-and-non-ssl-with-nginx-unicorn-rails

然后您将希望客户端对自己进行身份验证,以便您可以检查他们是否是从您那里接收数据的正确方。您可以在此处使用 OAuth,但据我所知,只有一个客户端,这可能有点矫枉过正。

您可以使用的最简单的身份验证形式是需要身份验证 token 。每个请求都必须包含此 api token ,您可以在服务器端验证它。您还可以使用它来记录有关使用情况的指标。

因此,基本上,每个请求都需要一个 API key 配置您的服务器,以便您的 API 仅通过 HTTPS 公开。

关于ruby-on-rails - 使用 https 保护 Rails API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162392/

相关文章:

iphone - 如何以编程方式清除 iPhone 上的浏览​​器缓存?

javascript - Discord.js 关于消息命令不起作用

javascript - Stripe 用户 token 问题

ruby-on-rails-3 - 将 best_in_place 与 TinyMCE 等富文本编辑器一起使用

ruby-on-rails - Rails 3 中静态页面的语言特定路由

ruby-on-rails-3 - 在mongoid中获取至少一个关系对象的模型

ruby-on-rails - 通过先写入 redis 来加速 web 服务,然后写入磁盘?

ruby-on-rails - 在 Rails 中调用自定义验证方法

ruby-on-rails - 仅在更改密码设计注册时需要密码

api - 如何在一个服务帐户下扩展 Google Analytics 应用程序?