情報セキュリティマネジメント 2023年 科目A 問10
問題文
HTTPのcookieに関する記述のうち、適切なものはどれか。
選択肢
ア:cookieに含まれる情報はHTTPヘッダの一部として送信される。(正解)
イ:cookieに含まれる情報はWebサーバだけに保存される。
ウ:cookieに含まれる情報はWebブラウザが全て暗号化して送信する。
エ:クライアントがcookieに含まれる情報の有効期限を設定する。
🔒 解説は解答すると表示されます
HTTP Cookieの送受信【情報セキュリティマネジメント解説】
正解の理由
ウェブでのやり取りでは、サーバ(サービスを提供するコンピュータ)がクライアント(利用者のWebブラウザ)にCookieを渡すときと、ブラウザがサーバに情報を返すときに、いずれもHTTP(HyperText Transfer Protocol:ウェブで使う通信ルール)のヘッダ(通信の先頭につく付帯情報)を使います。サーバがブラウザに渡すときはレスポンスヘッダのSet-Cookie、ブラウザがサーバに送るときはリクエストヘッダのCookieに入れて送ります。したがって選択肢ア「cookieに含まれる情報はHTTPヘッダの一部として送信される」が正しいです。
(補足)Cookie自体はブラウザ側に保存されますが、保存・送信の仕組みはHTTPヘッダで行われます。
解法ステップ
- Cookieが「どこで保存されるか」と「どう送られるか」を分けて考える。
- サーバがブラウザにCookieをセットする標準的な方法があるか思い出す:Set-Cookieヘッダを使う。
- ブラウザが以後サーバにその情報を送る方法は何か:HTTPリクエストのCookieヘッダとして送る。
- これに合致する選択肢がアだけであるため選ぶ。
選択肢別の誤答解説
- ア: 正しい。前述の通り、Cookieのやり取りはHTTPヘッダ(Set-Cookie/Cookie)で行われる。
- イ: 誤り。Cookieの実データは通常クライアント側のWebブラウザに保存される。サーバ側はCookieに対応する情報(例:セッションIDに対応するユーザ情報)をサーバ側データベースに保持することはあるが、「Cookie自体がWebサーバだけに保存される」わけではない。
- ウ: 誤り。WebブラウザがCookieを「すべて暗号化して送信する」わけではない。通信経路を暗号化するのはTLS(Transport Layer Security:通信の暗号化技術)で、HTTPSで接続されたときにHTTPヘッダ全体が暗号化されるだけである。Cookie自体の内容をブラウザが自動で暗号化する仕様はない(ただしアプリ側で値を暗号化して格納することは可能)。また、Secure属性を付けるとHTTPS接続時のみ送信されるという制御はある。
- エ: 誤り。Cookieの有効期限(Expires/Max-Age)は通常サーバがSet-Cookieヘッダで指示する。クライアント側で任意に有効期限を設定する一般的な仕様ではない(ユーザがブラウザでCookieを削除したりブラウザ側の設定で扱いを変えたりはできるが、標準的な発行・指定はサーバ側が行う)。
よくある誤解
- 「Cookieは暗号化されて安全」:誤解です。Cookie自体は暗号化されないのが通常です。HTTPSという通信路の暗号化で守られているだけです。重要情報はCookieに平文で入れない、署名・暗号化しておく等の対策が必要です。
- 「Cookieはサーバ側にしかない」:Cookieは基本的にクライアント(ブラウザ)に保存されます。サーバはCookieに入れた情報に基づいてサーバ側で状態を管理することが多い(例:セッションIDとユーザ情報の紐付け)。
- 「有効期限はクライアントが自由に決められる」:ユーザやブラウザは削除や保存設定を変えられますが、Cookie発行時の有効期限の指定は通常サーバが行います。
補足コラム
- Set-CookieとCookieヘッダ:サーバ→ブラウザはレスポンスヘッダのSet-Cookie: name=value; Expires=...; Path=/; Domain=...; Secure; HttpOnly; SameSite=... などで指示します。ブラウザ→サーバはリクエストヘッダの Cookie: name=value; ... の形で送ります。
- よく使う属性の意味(簡潔に)
- Secure:HTTPS接続のときだけ送る。
- HttpOnly:JavaScriptからの参照を禁止し、XSS(クロスサイトスクリプティング)による窃取を防ぐ助けになる。
- SameSite:第三者サイトからのリクエストにCookieを送るかの制御(CSRF対策)。
- 実務上の注意(職場での運用イメージ)
- ログイン情報をCookieに入れるときは、値をそのまま入れない(セッションIDのみ、かつサーバ側で紐付け管理)。SecureとHttpOnlyを必ず使い、有効期限は短めにする。プライバシーや同意(クッキー同意)のルールを整備する。
FAQ
Q. Cookieは誰が書き換えられる?
A. ブラウザに保存されるため利用者(または利用者の端末に侵入した第三者)が変更可能です。信頼できない値はサーバ側で検証・照合してください。
A. ブラウザに保存されるため利用者(または利用者の端末に侵入した第三者)が変更可能です。信頼できない値はサーバ側で検証・照合してください。
Q. Cookieが盗まれると何が起きる?
A. セッションIDが盗まれると、そのままログイン済みの状態を乗っ取られる可能性があります。HTTPS・HttpOnly・短い有効期限などで被害を減らします。
A. セッションIDが盗まれると、そのままログイン済みの状態を乗っ取られる可能性があります。HTTPS・HttpOnly・短い有効期限などで被害を減らします。
Q. JavaScriptでCookieを読めるか?
A. 原則読めますが、HttpOnly属性が付いていればJavaScriptからは読めません。セキュリティを高めたいCookieにはHttpOnlyを付けます。
A. 原則読めますが、HttpOnly属性が付いていればJavaScriptからは読めません。セキュリティを高めたいCookieにはHttpOnlyを付けます。
関連キーワード: cookie、HTTPヘッダ、Set-Cookie、Secure属性、HttpOnly、SameSite、TLS、セッション管理、CSRF対策

\ せっかくなら /
情報セキュリティマネジメントを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

