Security-testing-http-messages
セキュリティテスト-HTTPメッセージ
HTTPメッセージ
HTTPは、クライアントサーバーアーキテクチャモデルと、信頼性の高いTCP/IP接続でメッセージを交換することで動作するステートレスな要求/応答プロトコルに基づいています。
HTTP「クライアント」は、1つ以上のHTTP要求メッセージを送信する目的でサーバーへの接続を確立するプログラム(Webブラウザーまたはその他のクライアント)です。 HTTP "サーバー"は、HTTP応答メッセージを送信してHTTPリクエストを処理するために接続を受け入れるプログラム(一般的にはApache WebサーバーやインターネットインフォメーションサービスIISなどのWebサーバー)です。
HTTPは、Uniform Resource Identifier(URI)を使用して、特定のリソースを識別し、接続を確立します。 接続が確立されると、HTTPメッセージは、インターネットメール[RFC5322]および多目的インターネットメール拡張機能(MIME)[RFC2045]で使用される形式と同様の形式で渡されます。 これらのメッセージは、クライアントからサーバーへの要求と、サーバーからクライアントへの応答で構成され、次の形式になります-
HTTP-message = <Request> | <Response> ; HTTP/1.1 messages
HTTP要求とHTTP応答では、RFC 822の汎用メッセージ形式を使用して、必要なデータを転送します。 この一般的なメッセージ形式は、次の4つの項目で構成されています-
- スタートライン
- CRLFが後に続く0個以上のヘッダーフィールド
- ヘッダーフィールドの終わりを示す空の行(CRLFの前に何もない行)
- オプションでメッセージ本文
次のセクションでは、HTTPメッセージで使用される各エンティティについて説明します。
メッセージの開始行
スタートラインには、次の一般的な構文があります-
start-line = Request-Line | Status-Line
HTTPリクエストメッセージとHTTPレスポンスメッセージについてそれぞれ説明しながら、Request-LineとStatus-Lineについて説明します。 今のところ、要求と応答の場合の開始行の例を見てみましょう-
GET/hello HTTP/1.1 (This is Request-Line sent by the client)
HTTP/1.1 200 OK (This is Status-Line sent by the server)
ヘッダーフィールド
HTTPヘッダーフィールドは、要求または応答、またはメッセージ本文で送信されるオブジェクトに関する必要な情報を提供します。 HTTPメッセージヘッダーには次の4つのタイプがあります-
- General-header -これらのヘッダーフィールドには、要求メッセージと応答メッセージの両方に一般的な適用性があります。
- Request-header -これらのヘッダーフィールドは、要求メッセージにのみ適用可能です。
- Response-header -これらのヘッダーフィールドは、応答メッセージにのみ適用可能です。
- Entity-header -これらのヘッダーフィールドは、エンティティ本体に関するメタ情報を定義します。または、本体が存在しない場合は定義します。
上記のヘッダーはすべて同じ一般的な形式に従い、各ヘッダーフィールドは名前とそれに続くコロン(:)およびフィールド値で構成されます。
message-header = field-name ":" [ field-value ]
以下は、さまざまなヘッダーフィールドの例です-
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
メッセージ本文
HTTPメッセージのメッセージ本文部分はオプションですが、使用可能な場合は、要求または応答に関連付けられたエンティティ本体を運ぶために使用されます。 エンティティボディが関連付けられている場合、通常、 Content-Type および Content-Length ヘッダー行は、関連付けられているボディの性質を指定します。
メッセージ本文とは、実際のHTTPリクエストデータ(フォームデータやアップロードなどを含む)およびサーバーからのHTTP応答データ(ファイル、画像などを含む)を運ぶものです。 以下は、メッセージ本文の簡単な内容です-
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>