我已经在Web开发(主要是作为后端开发人员)工作了近10年,而且当用户未经过身份验证时,我使用的返回状态为401 Unauthorized
。在最近与同事讨论时,他们建议我们在用户未经过身份验证时返回状态404 Not Found
,以便我们甚至不会透露甚至存在该网址的端点。
我知道他们来自哪里,但对我来说,这只是感觉不对。通过这种方式,您无法轻松判断失败是因为用户未经过身份验证,还是网址不正确。
我查看了RFC7235,并说明了以下内容:
404(未找到)状态代码表示源服务器已执行 找不到目标资源的当前表示或不是 愿意透露一个存在。
这与我的同事建议的论点相同,所以当用户未经过身份验证时,我应该返回404 Not Found
请求吗?
答案 0 :(得分:0)
您可以在RFC 7231中找到关于403 Forbidden
状态代码的类似声明:
希望隐藏"的原始服务器目前存在的一个 禁止目标资源 MAY 而是以状态代码响应 404(未找到)
因此,通常由您和您的团队决定是使用404
还是401
状态代码。
P.S。:一些网络安全应用和工具正在分析404
页面,以便稍后跳过类似的页面。并且有时也会分析URL
结构。
因此,如果您有一些敏感数据或者不想向任何人透露项目结构,404 Not Found
出于安全原因是好主意。而你的app / API变得更难以进行逆向工程。
这种方法的缺点是它在客户端方面有点不明显 - 当客户收到{{1}时,更难以找出问题所在}。