使用https保护Rails API

Pat*_*atm 4 api ssl https ruby-on-rails ruby-on-rails-3

我正在创建我的第一个API并使用Ruby on Rails.API将严格地是服务器到服务器.我已经完成了很多关于保护像这样的API的方法的阅读,并且已经决定使用https可能是最简单的方法,而不是Oauth.

附加信息:

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

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

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

Ari*_*jan 8

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,但是因为我收集的只有一个客户端,这可能是矫枉过正的.

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

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