处理禁止的 REST 请求 403 与 404

Handling forbidden REST requests 403 vs 404

从语义上讲,一个 API 应该 return 一个适应情况的错误信息。例如,如果用户向 GET /article/2386 发出请求,它应该 return(用户需要授权才能请求 API 处理权限管理):

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

那么在这两种情况下 return 403 是明智的还是 "criminal"?

我以前遇到过很多这样的情况,如果他们没有权限,我通常会走另一条 404ing 路线。我的理性是没有您可以查看的 ID 2386 的文章,因此 NotFound。我比 "you don't have permissions to view something that doesn't exist".

更喜欢那个

至于"is it criminal",我会说没有。我远非 RESTefarian,但我认为 REST 是使您的 api 对消费者更直观的指南。如果安全意味着您需要稍微改变一下,那就这样吧。另外,这真的会降低直观性吗?

希望对您有所帮助:)。