REST API,HTTP谓词和ACCESS日志

时间:2012-07-13 13:42:49

标签: http rest restful-url httpverbs

在设计它们时,我一直在尝试遵循良好的RESTful API实践。其中一个恰好非常简单和常见的事情让人难以理解:

  • 使用GET http动词检索资源

为什么呢?考虑您有一个URI来获取这样的帐户信息:

其中AXY_883772是银行系统中的帐户ID。安全审计将发出警告,说明:

  1. 帐户ID将出现在HTTP ACCESS LOGS
  2. 帐户ID可能会缓存在浏览器的历史记录中(即使不太可能经常使用浏览器访问RESTful API)
  3. 他们最终会“推荐”应该使用POST动词。

    所以,我的问题是:

    我们能做些什么呢?只需遵循安全建议,并避免在大多数时间使用GET?使用某种特殊的APACHE / IIS / NGINX访问日志配置来避免记录对某些URL的访问?

1 个答案:

答案 0 :(得分:2)

如果您的网址中包含敏感信息,并且您正在记录网址,则表示您正在记录敏感信息。

所以有两个明显的解决方案:

  • 不记录网址
  • 使用不包含敏感信息的其他网址

最后一个可以通过使用服务器映射回正常ID的某个(不同)ID来实现。

如果这些解决方案都不是您的选择,那么您就无法使用GET,因此它不是很好的REST设计。

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

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