如何在生产中禁用HATEOAS?

时间:2018-05-09 09:06:32

标签: spring-data-rest

我的REST API仅由我们自己的移动应用程序使用,并且还有一些受限制的端点供管理UI使用。通过观察移动应用程序的通信很容易获得进入点。从那里,恶意用户很容易使用HATEOAS发现所有可能的端点。

即使API受到Spring Security的正确保护,也存在已知的安全漏洞,例如https://jira.spring.io/browse/DATAREST-1144,它允许修改只读数据。

在开发过程中,HATEOAS非常有用,但我想在生产中禁用它,以便更难发现端点。

2 个答案:

答案 0 :(得分:2)

不是禁用HATEOAS(您的应用应该将其用作端点查找!),您应该相信您的安全层可以做到最好。

以下是一些注意事项:

  • 向管理端点添加用户授权。也许您可以使用现有的API密钥基础结构来实现这一目标。
  • 将管理端点移动到单独的受保护API

这些建议都不是快速修复,但我不建议禁用HATEOAS。一旦它消失,您在您需要的地方找到问题。

答案 1 :(得分:2)

您提出的解决方案意味着您打算依靠Security through Obscurity来保护您的管理功能。这是一个坏主意,因为恶意行为者仍然可以猜测他们不应该访问的相关功能,或者只是记住他们上次暴露它时通过遍历链接层次结构所学到的内容。 / p>

您绝对应该实施强大的身份验证和授权机制来保护您的资源,然后即使不良行为者可以通过不受保护的资源的链接结构发现到这些受保护资源的路由,他们也无法访问他们。链接意味着被发现,即使它们被他们不想要的人发现,安全最佳实践仍应确保它们不会造成伤害。