使用https保护Rails API

时间:2012-02-06 15:22:49

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

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

其他信息:

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

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

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

1 个答案:

答案 0 :(得分: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公开。