使用 403 响应还是 404 更好?

Is it better to use a 403 response or 404?

我有一个 restAPI,它允许用户提交要保存在我的数据库中的数据。提交数据时,他们的用户 ID 将从请求 header 中获取并添加到文档中

在我的 collection (mongoDB) 中有一个正常的 _id 字段和一个引用用户的 userID 字段。

我的问题是在恶意用户向不属于他们的文档提交 PUT 或 DELETE 请求的情况下,最好的处理方式是什么。

  1. 我仅使用提交的 _id 从数据库中提取预测,根据请求 userID 检查 userID 字段,如果他们发出 403 响应不匹配。

  2. 我通过_iduserID查询数据库,所以如果文档不属于请求用户,就不会找到。然后我会发出 404 响应,就像他们提交了一个不存在的 ID 一样。

两种选择的目的相同,都是为了防止用户编辑或删除不属于自己的资源,但哪个“更好”?

404是“未找到”,显然不是这样。

使用 403。

引用自Wikipedia

HTTP 403 is returned when the client is not permitted access to the resource despite providing authentication ...