在开发公共 RESTful API 时是不是应该认真对待不安全的直接对象引用?

Posted

技术标签:

【中文标题】在开发公共 RESTful API 时是不是应该认真对待不安全的直接对象引用?【英文标题】:Should Insecure Direct Object Reference be taken seriously when developing public RESTful APIs?在开发公共 RESTful API 时是否应该认真对待不安全的直接对象引用? 【发布时间】:2014-10-02 00:05:06 【问题描述】:

我去阅读OWASP's 2013 Top-10,发现不安全的直接对象引用排名第四。然而,当我试图进一步研究一些现有的公共 RESTful API 时,事实证明 Facebook 和世界银行甚至都没有理会它。两者都只是使用直接对象引用。正如您在下面的示例中所看到的:

Facebook API 调用

http://graph.facebook.com/5

Word Bank API 调用

http://api.worldbank.org/countries/us?format=json

这是否意味着我们在开发公共 RESTful API 时不应该认真对待不安全的直接对象引用?

【问题讨论】:

【参考方案1】:

直接来自 OWASP 指南:

如何防止这种情况发生? 防止不安全的直接对象引用需要选择一种方法来保护每个用户可访问的对象(例如,对象编号、文件名): 1.使用每个用户或会话间接对象引用。 [...] 2.检查访问。 [...]

Facebook 和世界银行选择了选项 2 而不是选项 1。

【讨论】:

以上是关于在开发公共 RESTful API 时是不是应该认真对待不安全的直接对象引用?的主要内容,如果未能解决你的问题,请参考以下文章

RESTful API 应该有模式吗?

如何设计好的RESTful API

如何设计好的RESTful API

API+RESTful

RESTful API 的令牌认证:是不是应该定期更改令牌?

RESTful API 设计:更新 (PUT) 中的不可更改数据是不是应该是可选的?