从语义上讲,API应该返回适合该情况的错误消息。例如,如果用户向GET /article/2386
发出请求,则应返回(用户需要auth以请求API处理权限管理):
现在我想知道在两种情况下返回403 Forbidden是否更明智,因为邪恶的用户可能会尝试随机扫描资源并深入了解它们是否存在(如果存在则为403,如果存在则为404)别' T)。
因此,建议在两种情况下都返回403,或者是"犯罪"?
答案 0 :(得分:3)
我之前遇到过很多这样的情况,如果他们没有权限,我通常会选择404的另一条路线。我的理性存在没有你可以查看的ID 2386的文章,因此NotFound。我不仅仅喜欢这个,而且你没有权限查看那些不存在的东西"。
至于"是犯罪",我会说不。我远不是一个RESTefarian,但我认为REST是一个让你的API更直观的指南。如果安全意味着您需要稍微改变一下,那就这样吧。另外,这真的让它变得不那么直观了吗?
我希望这会有所帮助:)。