1

我正在开发一个非常基本的 RoR 应用程序,基本上只能由我组织内的 2-3 人使用。我有一些其他应用程序(用 Perl 编写)不时需要从 RoR 应用程序请求 JSON 对象。我需要防止未经授权访问此请求,但我不需要任何花哨的东西,因为只有我的应用程序会请求访问。仅要求请求 POST 一些预先确定的“密码”的应用程序并且仅当在 POST 请求中提供该密码时才让 RoR 应用程序回复 JSON 对象是否安全(足够,为此目的)?对于一些简单而安全的方法来实现这一点,还有其他建议吗?我对 RoR 很陌生。

谢谢!杰夫

4

2 回答 2

1

简单且更安全一点,可能是使用带有密码和日期的 sha1 创建密钥。这样钥匙就会每天更换。

就像是:

key = Digest::SHA1.hexdigest("secret#{date}")

希望这可以帮助。

于 2012-08-08T15:14:42.377 回答
1

您可以实施更多奇特的解决方案,但您的方式非常有效。您可以通过简单地使您的应用程序使用 SSL 来隐藏密码的传输,并且它会比许多 Web 服务更安全(许多站点仍然以纯文本传输凭据)。并且由于凭据仅限于在客户端和服务器之间使用,因此您可以随意使用它,这将限制暴力密码攻击的风险。

如果你想要更奇特的东西,我建议使用 gem 'api_auth',它会为你的 URL 参数添加一个签名,它是你整个请求的哈希和一个密钥。gem 将在客户端生成签名,然后在服务器上验证签名。这是一个非常强大的解决方案。事实上,您不需要 SSL,除非您不希望任何人看到 URL 和参数本身。但是签名对于确切的请求和包括 request.ip 在内的所有请求参数都是唯一的,这使得除了发起者之外的任何人都无法使用该请求。附注 - 签名附加到请求标头,因此您不会在您的 url 或控制台日志中看到任何不同的内容。

于 2012-08-08T16:05:47.023 回答