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

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


問題文

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 情報処理技術者試験対策アプリ

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