TsgcWebSocketHTTPServerプロパティ › StrictRequestParsing

StrictRequestParsing プロパティ

リクエストスマグリング攻撃で使用されるあいまいなHTTPリクエストを拒否し、より厳格なチャンク転送エンコーディングの検証を適用します。

構文

property StrictRequestParsing: Boolean read GetStrictRequestParsing write SetStrictRequestParsing;

デフォルト値

True

解説

StrictRequestParsingが有効な場合、サーバーは、Content-LengthTransfer-Encodingヘッダーの両方を持つHTTPリクエストをHTTPステータス400(Bad Request)で拒否します。この組み合わせはリクエストボディの終わりの位置についてあいまいであり、HTTPリクエストスマグリング(TE.CL / CL.TEデシンク)攻撃の基礎となります。この攻撃では、フロントエンドプロキシとバックエンドサーバーがリクエストの境界について意見が一致せず、攻撃者がプロキシを通り抜けて2番目のリクエストを密輸します。厳格な解析では、サーバーはチャンク転送エンコーディングのより厳しい検証も適用し、不正なチャンクサイズやトレーラーを拒否します。

このプロパティはデフォルトで有効になっており、信頼できないネットワークから到達可能なサーバー、特にリバースプロキシやロードバランサーの背後に配置されている場合は有効のままにしてください。両方のヘッダーを正当に送信する非準拠クライアントと相互運用する場合にのみ無効にしてください。

使用例


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

プロパティに戻る