Webセキュリティ入門:HTTP・Cookie・脆弱性
HTTPレスポンスの読み方
この回でやること
HTTPレスポンスの形と、状態コードや本文から漏れてしまう情報を見ます。
- 読む 約 5 分
- 最後にクイズ 1 問
このレッスンで学ぶこと
HTTPレスポンスは、要求に対してサーバーが返す文字列です。この回では、状態コード、ヘッダー、本文の順に形を読みます。
読み終えるころには、返答のどこを見て何が分かるのかを、状態コードと本文の両方で言えるようになります。
返答の形
要求と同じく、返答も文字列です。
http
HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: session=abc123; HttpOnly
{"orderId":1001,"total":2000}1行目に状態コード、続いてヘッダー、空行、本文という並びです。
状態コードの意味
| 範囲 | 意味 | よく見るもの |
|---|---|---|
| 200番台 | 成功 | 200 OK、201 Created |
| 300番台 | 別の場所へ | 301、302 |
| 400番台 | 要求側の問題 | 400、401、403、404 |
| 500番台 | サーバー側の問題 | 500、503 |
401 と 403 の違いは押さえておきます。401 は「誰か分からない」、403 は「誰かは分かるが許可がない」です。
違いが答えになる
ここが今回の要です。返答の違いそのものが、外から見える情報になります。
存在しない利用者には「利用者が見つかりません」、存在するが合言葉が違う場合に「合言葉が違います」と返すと、どのアカウントが実在するかを教えたことになります。
差が出ること自体が情報
文言だけでなく、状態コードの違い、本文の長さ、返答までの時間。どれも「差」があれば読み取れます。区別してほしくないものは、区別が付かない返し方にします。
本文にも出る
エラー画面にそのまま出てしまいがちなものがあります。
- 内部のファイルパスやスタックトレース
- 使っているフレームワークとその版
- データベースのエラー文と、そこに含まれる列名
どれも「次にどこを触ればよいか」を教えます。利用者に必要なのは何が起きたかだけで、どこでどう壊れたかは要りません。