当用户未经过身份验证时,状态代码404是否合适?

时间:2018-04-13 09:32:40

标签: http http-status-code-404

我已经在Web开发(主要是作为后端开发人员)工作了近10年,而且当用户未经过身份验证时,我使用的返回状态为401 Unauthorized。在最近与同事讨论时,他们建议我们在用户未经过身份验证时返回状态404 Not Found,以便我们甚至不会透露甚至存在该网址的端点。

我知道他们来自哪里,但对我来说,这只是感觉不对。通过这种方式,您无法轻松判断失败是因为用户未经过身份验证,还是网址不正确。

我查看了RFC7235,并说明了以下内容:

  

404(未找到)状态代码表示源服务器已执行      找不到目标资源的当前表示或不是      愿意透露一个存在。

这与我的同事建议的论点相同,所以当用户未经过身份验证时,我应该返回404 Not Found请求吗?

1 个答案:

答案 0 :(得分:0)

您可以在RFC 7231中找到关于403 Forbidden状态代码的类似声明:

  

希望隐藏"的原始服务器目前存在的一个      禁止目标资源 MAY 而是以状态代码响应      404(未找到)

因此,通常由您和您的团队决定是使用404还是401状态代码。

P.S。:一些网络安全应用和工具正在分析404页面,以便稍后跳过类似的页面。并且有时也会分析URL结构。

因此,如果您有一些敏感数据或者不想向任何人透露项目结构,404 Not Found出于安全原因是好主意。而你的app / API变得更难以进行逆向工程。

这种方法的缺点是它在客户端方面有点不明显 - 当客户收到{{1}时,更难以找出问题所在}。