戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

情報処理安全確保支援士 2025年 春期 午前2 問20


問題文

Webページ内のHTMLフォームに入力されたデータがWebサーバに送られる際には、HTTPプロトコルのGETメソッド又はPOSTメソッドを用いたリクエストメッセージが使用される。このとき、入力されたデータはリクエストメッセージのどの部分に含まれるか。ここで、HTTPのバージョンはHTTP/1.1とし、リクエストメッセージは、リクエスト行、ヘッダー、メッセージボディの順で構成されているものとする。
情報処理安全確保支援士 2025年 春期 午前2 問20の選択肢の画像

選択肢

ア:
イ:(正解)
ウ:
エ:

🔒 解説は解答すると表示されます

フォーム送信データの格納【午前2解説】

正解の理由

選択肢イが正しい理由は、HTTP/1.1のリクエスト構成に基づき、GETメソッドではフォームデータがリクエスト行のURI(query string)に付加されるのに対し、POSTメソッドではリクエストのメッセージボディに格納されるためです。具体的には、GETはリクエスト行のパス部分の末尾に ?key=value 形式のクエリ文字列を付けて送信し、POSTはヘッダーにContent-TypeやContent-Lengthを設定して、実際のフォームデータをメッセージボディに含めて送信します。
なお、POSTが「安全である」と断定するのは誤りです。POSTはデータをURLに含めないためURLや参照元ヘッダ、サーバのログへの露出リスクは低くなりますが、通信経路の機密性(盗聴対策)はTLS(HTTPS)に依存します。

解法ステップ

  1. HTTPリクエストの構成(リクエスト行、ヘッダー、メッセージボディ)を確認する。
  2. GETとPOSTの一般的な振る舞いを思い出す:GETはクエリ文字列を使う、POSTはボディを使う。
  3. 選択肢と照合する:GET → リクエスト行、POST → メッセージボディ となる組合せを選ぶ。
  4. セキュリティやヘッダーの役割を踏まえ、誤答を排除する(ヘッダーはフォームデータの本体を入れる場所ではない)。

選択肢別の誤答解説

  • ア:GETがリクエスト行に格納される点は合っているが、POSTをヘッダーに格納するとしているため誤り。ヘッダーはメタ情報(Content-Typeなど)を持つ場所で、フォームデータの本体は入らない。
  • ウ:両方ともヘッダーに入るとするのは誤り。GETのデータはURI(リクエスト行)に、POSTのデータはメッセージボディに入る。ヘッダーにフォームの本体が格納されることは通常ない。
  • エ:GETをヘッダーに入れるとするのは誤り(GETはクエリ文字列としてリクエスト行に含まれる)。POSTをメッセージボディに入れる点は正しいが、組合せとして間違い。
  • 正答である イ:GET=リクエスト行(クエリ文字列)、POST=メッセージボディ、という正しい組合せ。

よくある誤解

  1. 「POSTは安全」は誤り:POSTはURLにデータを含めないため露出リスクは下がるが、通信内容の機密性はTLS(HTTPS)で確保する必要がある。
  2. 「ヘッダーにフォームデータを入れることがある」は誤り:ヘッダーはデータ形式や長さなどのメタ情報を表す場所で、フォーム本体はメッセージボディに入る(例外的な実装を除く)。
  3. 「GETにデータ量の制限はない」は不正確:仕様上は厳密な長さ制限はないが、ブラウザやサーバ、プロキシでURL長の制限があり大きなデータ送信には不向き。

補足コラム

  • フォーム送信の標準的なContent-Type:
    • application/x-www-form-urlencoded:デフォルトのフォーム送信(名前=値のエンコード)
    • multipart/form-data:ファイルアップロードなどバイナリを含む場合
  • サーバ側の受け取り方の目安:
    • GET → サーバはリクエスト行からクエリ文字列を解析してパラメータを得る。
    • POST → ヘッダーのContent-Typeを見てボディの解析方法を決め、メッセージボディからパラメータを抽出する。
  • 実用上の選び方:
    • 参照可能で副作用のない検索やページ遷移 → GET
    • データ作成・更新や大きなデータ・ファイル送信 → POST
例:GETとPOSTのリクエスト(簡略)
# GETの例(クエリ文字列がリクエスト行に含まれる)
GET /search?q=情報&lang=ja HTTP/1.1
Host: example.com
User-Agent: ExampleAgent/1.0

# POSTの例(フォームデータがメッセージボディに含まれる)
POST /submit HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

name=%E4%BE%8B&comment=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF

FAQ

Q1: GETにもメッセージボディを含められますか?
A1: HTTP/1.1仕様では技術的にリクエストボディを持てるメソッドがあるが、GETにボディを含める慣習は一般的ではなく、多くのサーバやプロキシは無視するか処理が未定義です。フォーム送信の用途ではGETはクエリ文字列を使います。
Q2: 大量のデータはどちらで送るべきですか?
A2: 大量データやファイルはPOST(メッセージボディ)を使うのが適切です。URL長制限やログ露出の観点からもPOSTが望ましいです。
Q3: 送信内容の機密性はどうすれば保てますか?
A3: HTTPS(TLS)を使ってリクエスト全体を暗号化する必要があります。POSTを使うだけでは通信経路の機密性は保証されません。

関連キーワード: HTTP、GET、POST、クエリ文字列、メッセージボディ、Content-Type、Content-Length、URLエンコード、multipart/form-data、リクエスト行、参照元ログ、TLS
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について