哪种 HTTP 状态代码适合这种情况?
Which HTTP status code is appropriate for this situation?
假设我们有一个 API,其中用户属于特定租户。如果用户试图检索他们不属于的租户的数据,抛出 403 或 404 错误更 appropriate/secure 吗?
从一个角度来看,403 是有道理的,因为该用户无权访问租户。但是,从另一个角度来看,404 是有道理的,因为我们没有暴露他们请求的租户存在。
哪种方法更好?我的直觉说 404
您不应该跨租户公开任何信息。从一个租户的角度来看,如果资源属于另一个租户,则该资源不存在 - 他们不应该能够区分。换句话说,对于真正的 non-existent 资源,对于分配给不同租户的资源(对于当前客户端 non-existent),如果租户 ID 是请求,然后现有和 non-existing 租户 ID 也应该产生相同的结果,如果客户端未被授权给他们。
我理解这有点违背 403 的目的,并且可以有简单的理论 counter-arguments 从其他角度来看也可能非常有效,但不泄露任何信息是最安全的选择。
假设我们有一个 API,其中用户属于特定租户。如果用户试图检索他们不属于的租户的数据,抛出 403 或 404 错误更 appropriate/secure 吗?
从一个角度来看,403 是有道理的,因为该用户无权访问租户。但是,从另一个角度来看,404 是有道理的,因为我们没有暴露他们请求的租户存在。
哪种方法更好?我的直觉说 404
您不应该跨租户公开任何信息。从一个租户的角度来看,如果资源属于另一个租户,则该资源不存在 - 他们不应该能够区分。换句话说,对于真正的 non-existent 资源,对于分配给不同租户的资源(对于当前客户端 non-existent),如果租户 ID 是请求,然后现有和 non-existing 租户 ID 也应该产生相同的结果,如果客户端未被授权给他们。
我理解这有点违背 403 的目的,并且可以有简单的理论 counter-arguments 从其他角度来看也可能非常有效,但不泄露任何信息是最安全的选择。