TsgcWebSocketHTTPServer属性 › StrictRequestParsing

StrictRequestParsing 属性

拒绝请求走私攻击中使用的有歧义的 HTTP 请求,并应用更严格的分块编码验证。

语法

property StrictRequestParsing: Boolean read GetStrictRequestParsing write SetStrictRequestParsing;

默认值

True

备注

当启用 StrictRequestParsing 时,对于同时携带 Content-LengthTransfer-Encoding 标头的任何 HTTP 请求,服务器会以 HTTP 状态 400(错误请求)拒绝。该组合对于请求体在何处结束是有歧义的,并且它是 HTTP 请求走私(TE.CL / CL.TE 不同步)攻击的基础,在这种攻击中,前端代理和后端服务器对请求边界存在分歧,攻击者由此将第二个请求偷渡过代理。启用严格解析后,服务器还会对分块传输编码应用更严格的验证,拒绝格式错误的分块大小和尾部。

此属性默认启用,并且应在任何可从不受信任网络访问的服务器上保持启用,尤其是当它位于反向代理或负载均衡器后面时。仅当需要与确实同时发送这两个标头的不符合规范的客户端互操作时,才禁用它。

示例


oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
// reject ambiguous Content-Length + Transfer-Encoding requests (HTTP 400)
oServer.StrictRequestParsing := true;
oServer.Active := true;

返回属性