Security-testing-http-requests
セキュリティテスト-HTTPリクエスト
HTTPリクエスト
HTTPクライアントは、次の形式を含むリクエストメッセージの形式でサーバーにHTTPリクエストを送信します-
- リクエストライン
- CRLFが後に続く0個以上のヘッダー(一般|リクエスト|エンティティ)フィールド
- ヘッダーフィールドの終わりを示す空の行(CRLFの前に何もない行)
- オプションでメッセージ本文
次のセクションでは、HTTPメッセージで使用される各エンティティについて説明します。
メッセージリクエストライン
Request-Lineはメソッドトークンで始まり、Request-URI、プロトコルバージョンが続き、CRLFで終わります。 要素はスペースSP文字で区切られます。
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Request-Lineに記載されている各部分について説明しましょう。
リクエスト方法
要求 Method は、指定された Request-URI で識別されるリソースで実行されるメソッドを示します。 メソッドは大文字と小文字を区別し、常に大文字で表記する必要があります。 HTTP/1.1では次のメソッドがサポートされています-
S.No. | Method and Description |
---|---|
1 |
GET これは、特定のURIを使用して特定のサーバーから情報を取得するために使用されます。 GETを使用するリクエストは、データを取得するだけで、データに他の影響を与えません。 |
2 |
HEAD GETと同じですが、ステータス行とヘッダーセクションのみを転送します。 |
3 |
POST サーバーにデータを送信するために使用されます。 たとえば、顧客情報、ファイルのアップロードなど。 HTMLフォームを使用します。 |
4 |
PUT ターゲットリソースの現在のすべての表現を、アップロードされたコンテンツに置き換えます。 |
5 |
DELETE URIで指定されたターゲットリソースの現在の表現をすべて削除します。 |
6 |
CONNECT 指定されたURIで識別されるサーバーへのトンネルを確立します。 |
7 |
OPTIONS ターゲットリソースの通信オプションについて説明します。 |
8 |
TRACE ターゲットリソースへのパスに沿ってメッセージループバックテストを実行します。 |
リクエストURI
Request-URIは、要求を適用する必要があるリソースを識別するUniform Resource Identifierです。 以下は、URIを指定するために最も一般的に使用されるフォームです-
Request-URI = "*" | absoluteURI | abs_path | authority
S.No. | Method and Description |
---|---|
1 | The asterisk * *is used when HTTP request does not apply to a particular resource, but to the server itself. It is only allowed when the method does not necessarily apply to a resource. For example, OPTIONS * HTTP/1.1 * |
2 | The* absoluteURI is used when HTTP request is being made to a proxy. The proxy is requested to forward the request or service it from a valid cache, and return the response. For example, GET https://www.w3.org/pub/WWW/TheProjectl HTTP/1.1* |
3 |
The most common form of Request-URI is that used to identify a resource on an origin server or gateway. For example, a client wishing to retrieve the resource above directly from the origin server would create a TCP connection to port 80 of the host "www.w3.org" and send the lines −
注意-絶対パスを空にすることはできません。 元のURIに何も存在しない場合は、「/」(サーバールート)として指定する必要があります |
リクエストヘッダーフィールド
リクエストヘッダーフィールドを使用すると、クライアントはリクエストに関する追加情報とクライアント自体に関する情報をサーバーに渡すことができます。 これらのフィールドはリクエスト修飾子として機能し、要件に基づいて使用できる次の重要なリクエストヘッダーフィールドが利用可能です-
- 受け入れ文字セット
- 受け入れエンコード
- 受け入れ言語
- 承認
- 期待する
- From
- Host
- 一致する場合
- If-Modified-Since
- If-None-Match
- If範囲
- 未修正の場合
- マックスフォワード
- プロキシ承認
- 範囲
- リファラー
- TE
- ユーザーエージェント
独自のカスタムクライアントおよびWebサーバーを作成する場合に備えて、カスタムフィールドを導入できます。
リクエストメッセージの例
それをまとめて、finddevguides.comで実行されているWebサーバーから hello ページをフェッチするHTTPリクエストを作成します-
GET/hello HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.finddevguides.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
ここでは、サーバーから計画HTMLページを取得しているため、サーバーに要求データを送信していません。 接続は一般的なヘッダーであり、残りのヘッダーはすべてリクエストヘッダーです。 次は、リクエストメッセージ本文を使用してフォームデータをサーバーに送信する別の例です-
POST/cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.finddevguides.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
licenseID = string&content = string&/paramsXML = string
ここでは、渡されたデータを処理するために、指定されたURL _/cgi-bin/process.cgi_が使用され、それに応じて応答が再調整されます。 content-type は、渡されたデータが単純なWebフォームデータであり、 length がメッセージ本文に入れられたデータの実際の長さであることをサーバーに伝えます。 次の例は、プランXMLをWebサーバーに渡す方法を示しています-
POST/cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.finddevguides.com
Content-Type: text/xml; charset = utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<?xml version = "1.0" encoding = "utf-8"?>
<string xmlns = "http://clearforest.com/">string</string>