TRACEとCONNECT — 診断とトンネルメソッド

診断用のTRACEとプロキシトンネル確立用のCONNECTという、めったに使われないHTTPメソッドについて解説します。

Unsafe Methods

詳細な説明

TRACE: 診断用のリクエストエコー

TRACEメソッドはサーバーに受信したリクエストをエコーバックするよう求めます。これは中間装置(プロキシ、ロードバランサー)がリクエストに加えた変更を確認するための診断目的で使用されます。

TRACEの例

TRACE /test HTTP/1.1
Host: api.example.com
X-Custom-Header: test-value
HTTP/1.1 200 OK
Content-Type: message/http

TRACE /test HTTP/1.1
Host: api.example.com
X-Custom-Header: test-value
Via: 1.1 proxy.example.com

Viaヘッダーがプロキシによって追加されたことをTRACEが明らかにします。

TRACEのセキュリティ上の懸念

TRACEはクロスサイトトレーシング(XST)攻撃のため、ほとんどの本番サーバーで無効化されています。攻撃者がJavaScriptを使用してTRACEリクエストを送信し、ブラウザが自動的に付加するCookieAuthorizationヘッダーを含むレスポンスを読み取ることで、機密認証情報を盗む可能性があります。

CONNECT: トンネルの確立

CONNECTはプロキシに宛先サーバーへのTCPトンネルを確立するよう要求します。これは主にHTTPプロキシを通じたHTTPS接続に使用されます。

CONNECTの例

CONNECT api.example.com:443 HTTP/1.1
Host: api.example.com:443
Proxy-Authorization: Basic dXNlcjpwYXNz
HTTP/1.1 200 Connection Established

トンネル確立後、後続のすべてのデータはクライアントとターゲットサーバー間でエンドツーエンドで暗号化されて直接流れます。プロキシは暗号化されたトラフィックを読み取ることができません。

プロパティの比較

プロパティ TRACE CONNECT
安全 はい いいえ
冪等 はい いいえ
キャッシュ可能 いいえ いいえ
主な用途 診断 プロキシトンネリング
一般的に有効 いいえ プロキシサーバー上

CONNECTに遭遇する場面

CONNECTを手動で呼び出すことはまれです。HTTPプロキシを設定してHTTPSサイトにアクセスすると、ブラウザが自動的に送信します。プロキシがトンネルを作成し、すべてのTLS暗号化トラフィックがそれを通過します。

ユースケース

ネットワークエンジニアがTRACEを使用して、カスタムヘッダーがクライアントとオリジンサーバー間で消える理由をデバッグし、リバースプロキシがそれを削除していることを発見します。企業ファイアウォールがCONNECTを使用して、HTTPプロキシを通じてHTTPSトラフィックを復号化せずに許可します。

試してみる — HTTP Method Reference

フルツールを開く