2012-07-13 51 views
1

我一直在设计时遵循良好的RESTful API实践。其中一人恰好是非常简单和常见的弟妹难追:REST API,HTTP动词和访问日志

  • 使用GET HTTP动词来获取资源

为什么?考虑你有一个URI来获取账户信息如下:

AXY_883772是在银行系统中的帐户ID。安全审计将提出一个警告,指出:

  1. 帐户ID将出现在HTTP访问日志
  2. 帐户ID可能会在浏览器的历史缓存(尽管不太可能使用浏览器经常访问一个RESTful API)

他们最终通过“推荐”应该使用动词POST来代替。

所以,我的问题是:

我们能做些什么呢?只要遵循安全建议并避免在大多数情况下使用GET?使用某种特殊的APACHE/IIS/NGINX访问日志配置,以避免日志访问某些URL?

+0

我想说,当它不适用于您的项目时不要编写RESTful。 – kapa 2012-07-13 13:46:23

回答

2

如果您的网址中有敏感信息,并且您正在记录网址,那么您将记录敏感信息。

因此,有两个明显的解决方案:

  • 不要登录网址
  • 使用不同的URL不包含敏感信息

最后一个可以通过以下方式实现使用一些(不同的)你的服务器映射回正常的id。

如果这两种解决方案都不适合您,那么您无法使用GET,因此它不是很好的RESTful设计。

我意识到所有这些事情可能已经很明显,但这是我能给出的最准确的答案。

这不值得,这不仅适用于GET,它实际上也适用于PUT,DELETE和POST。