新 HTTP 规范 (RFC 7231) 中的“欺骗性请求路由”是啥意思?

Posted

技术标签:

【中文标题】新 HTTP 规范 (RFC 7231) 中的“欺骗性请求路由”是啥意思?【英文标题】:What does "deceptive request routing" mean in the new HTTP spec (RFC 7231)?新 HTTP 规范 (RFC 7231) 中的“欺骗性请求路由”是什么意思? 【发布时间】:2014-10-10 19:43:46 【问题描述】:

在RFC 2616 中,400 响应代码用于语法错误。

由于语法错误,服务器无法理解该请求。客户端不应该不加修改地重复请求。

RFC 7231 扩大了 400 的适用范围。规范还提供了一些其他客户端错误示例,但我不确定它们的含义。

400 (Bad Request) 状态码表示服务器不能或不会处理请求,因为某些东西被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息帧或欺骗性请求路由) .

具体来说,什么会构成“欺骗性请求路由”?

【问题讨论】:

可能的情况是主机请求标头中的名称未知。如果由于 DNS 问题或 DNS 重新绑定攻击,客户端使用了不正确的 IP 地址,则可能会发生这种情况。我不知道针对这种情况的更具体的 4xx 状态代码。 【参考方案1】:

作为一个例子,这可能与 CDN 相关。见RFC 3568。

第 4.1.2 节让我印象深刻:

该技术涉及使用 HTTP [4] 的任务,例如 Cookie、语言和用户代理,以便选择代理项。在 [20] 中提供了一些使用这种技术的示例。

当系统依赖包括自定义 HTTP 标头在内的信息进行决策时,引用示例(“欺骗性请求路由”)的相关性就出现了。当此类标头不存在、陈旧、不正确或无法处理时。作为一般规则,任何来自公共互联网的畸形或“错误”都可以安全地被假定为恶意(或“欺骗性”)。


另一个例子:有人中间人干扰了我的上行链路并劫持了我的会话 cookie。尝试使用该 cookie 访问该站点,但系统突然发现来自两个不同 IP 地址的具有相同令牌的请求。

【讨论】:

可能与 ISP 的某种屏蔽有关?

以上是关于新 HTTP 规范 (RFC 7231) 中的“欺骗性请求路由”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP状态码

rfc7231#section-6.5.1 关于 Kubernetes 上 dotnet 核心入口控制器 api 访问的问题

HTTP 两次 DELETE 同一个资源应该返回什么

不再以讹传讹,GET和POST的真正区别(转)

请求行与相应行

HTTP状态码