无效主机/ Referer请求标头的最合适的HTTP状态代码是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无效主机/ Referer请求标头的最合适的HTTP状态代码是什么?相关的知识,希望对你有一定的参考价值。

我正在编写一个Node.js / NPM模块,用于通过服务器端Host和Referer [sic]头验证来保护快速服务器免受DNS Rebind attacks的攻击。服务器管理员指定列入白名单的主机和/或引用者,并且任何不包括那些列入白名单的值的请求将收到错误状态代码并且没有结果。

什么是最合适的HTTP status code,当他们在请求中提供无效的Host或Referer标头时,或者在需要时无法提供一个The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource, or may need an account of some sort.时,将返回客户端。我在想401未经授权,但我想得到第二意见。也可以对400 Bad Request进行论证,或者我认为,412 Precondition Failed。

服务器是否有义务通过响应标头或正文通知客户端他们的请求被拒绝的原因(例如,需要列入白名单的主机),或者是否可以使用错误代码进行响应并让客户端对安全/混淆目的感到疑惑?

答案

你可能是对的,最好的匹配似乎是未经授权的。但最匹配的HTTP状态代码不是401,实际上是403。

403状态代码说https://stackoverflow.com/a/6937030/945214,这句话的后半部分完全适合你的用例。

见:http://projects.webappsec.org/w/page/13246936/Information%20Leakage

对于所有未经授权/未经身份验证的请求,建议不要回复解释,因为这会从您的服务器泄漏信息:qazxsw poi。

以上是关于无效主机/ Referer请求标头的最合适的HTTP状态代码是什么?的主要内容,如果未能解决你的问题,请参考以下文章

来自 IE 或 Firefox 的 CORS 请求中没有 Referer 标头

html Google Chrome扩展程序:蜂蜜(请参阅Ext错误:此扩展程序无法修改网络请求的请求标头“Referer”

如果缺少必需的标头,返回的最合适的 HTTP 状态代码是啥?

.htaccess - 检查Referer匹配没有硬编码的主机?

JavaScript window.location 未在请求标头中设置引用者

Heroku“无效主机标头”主机配置中的ReactJS APP?