当用户有权访问url但不查询参数时要使用的https状态代码是什么?

时间:2011-04-13 08:56:13

标签: security http permissions status

美好的一天,

当请求者有权访问该URL但具有不正确的查询参数时,应使用什么http状态代码。

我们这样说:

作为用户100,我可以访问http://example.com/bankaccount/get?id=100

但是,我不应该看到其他用户的银行帐户,让我们通过http://example.com/bankaccount/get?id=200说明。

应该使用哪种HTTP状态代码?

3 个答案:

答案 0 :(得分:5)

如果禁止访问,请返回403

  

服务器理解请求,但拒绝履行请求。 [...]如果请求方法不是HEAD并且服务器希望公开为什么请求没有得到满足,那么它应该描述实体中拒绝的原因。如果服务器不希望将此信息提供给客户端,则可以使用状态代码404(未找到)。

但是我没有看到明确指定ID的重点,因为你现在已经是用户的ID了。所以/bankaccount/get就足够了。

答案 1 :(得分:1)

在你的例子中,我要么发送一个302,将他重定向到一个错误页面,要么就是一个带有自定义错误页面的200。这将是用户友好的版本。

编辑: 如果要在状态代码的4xx区域中选择某些内容,请确保Web服务器提供相应的错误页面。普通用户不会乐意看到白屏“403 - Forbidden”。带有自定义错误页面的403是解决此问题的好方法。

答案 2 :(得分:0)

我投票支持403 - 禁止,因为这是合法请求,但不允许当前用户使用。

如果查询参数名称错误,另一方面,它可能应该是404。