【问题标题】:Handling forbidden REST requests 403 vs 404处理禁止的 REST 请求 403 与 404
【发布时间】:2015-09-26 08:23:46
【问题描述】:

从语义上讲,API 应该返回适​​合情况的错误消息。例如,如果用户向GET /article/2386 发出请求,它应该返回(用户需要经过身份验证才能请求该 API 来处理权限管理):

  • 文章数据(如果存在且用户有权限),
  • 404 Not Found,如果不存在则显示错误消息,
  • 403 Forbidden with error message 如果用户没有权限。

现在我想知道在这两种情况下返回 403 Forbidden 是否更明智,因为邪恶的用户可能会尝试随机扫描资源并了解它们是否存在(如果存在则返回 403,如果不存在则返回 404) .

那么在这两种情况下都返回 403 是可取的还是“犯罪”?

【问题讨论】:

    标签: api rest http-headers


    【解决方案1】:

    我之前遇到过很多这样的情况,如果他们没有权限,我通常会选择 404 的另一条路线。我的理性是没有您可以查看的 ID 2386 文章,因此未找到。我更喜欢“您无权查看不存在的内容”。

    至于“是否犯罪”,我会说不。我远非 RESTefarian,但我认为 REST 是让您的 api 对消费者更直观的指南。如果安全意味着您需要稍微改变一下,那就这样吧。另外,这真的让它变得不那么直观了吗?

    我希望这会有所帮助:)。

    【讨论】:

    • 感谢您的回答。我还发现了这个 useful article 在 cmets 中有很多不同观点的主题
    猜你喜欢
    • 2015-09-10
    • 1970-01-01
    • 2014-10-31
    • 2016-11-24
    • 2012-02-03
    • 1970-01-01
    • 2015-02-12
    • 2016-08-17
    • 1970-01-01
    相关资源
    最近更新 更多