この記事では,情報処理安全確保支援士試験で頻出のHTTPヘッダのセキュア設定についてまとめてみました.試験勉強教材の一助としてご活用いただければ幸いです.
HTTPヘッダとは
HTTPについて
本題に入る前に,まずは「HTTP」や「HTTPヘッダ」について簡単に振り返ります.皆さんもご存じの通り,「HTTP(Hyper Text Transfer Protocol)」は,WebサーバとWebブラウザ(クライアント)間の通信で用いられるプロトコルの一種になります.
通常,ブラウザからWebページを閲覧する場合,クライアントからサーバに対しHTTPリクエストが送信され,サーバはHTTPリクエストに対する応答としてHTTPレスポンスをクライアントに返します.原則として,HTTPリクエストとHTTPレスポンスは1組のペアになっており,これらのHTTPリクエストとHTTPレスポンスのことをまとめてHTTPメッセージと呼びます.
ここで,HTTPメッセージの構成を覗いてみましょう.
| リクエスト|ステータス 行 |
| メッセージヘッダ |
| 改行(ヘッダとボディの境界明示のため) |
| メッセージボディ |
リクエスト
GETやPOSTなどのHTTP通信メソッドやリクエストするURI(≒URL)が含まれます.
ステータス
Webサーバからのレスポンス(リクエストに対する応答)のステータスコードが含まれます.いわゆる「404 Page not found」の404とかです.以下にステータスコードと状態の関係(目安)を示します.
・200番台:通信成功
・300番台:移動,リダイレクト関連
・400番台:認証や権限,ページ関連のエラー
・500番台:サーバ内部のエラー
メッセージヘッダ(本題)
いよいよ本題のメッセージヘッダ(HTTPヘッダ)について紹介します.実際のメッセージヘッダには,様々なものが存在しますが,この記事では代表的なものをピックアップしています.
| 名称 | 内容 |
| Referer | リンク元のURL |
| User-Agent | クライアントの環境(ブラウザ情報) |
| X-Frame-Options | ページのフレーム表示可否を設定 |
| X-Content-Type-Options | メディアタイプの適用設定 |
| Strict-Transport-Security | HTTPSアクセスを強制 |
このうち,情報処理技術者試験で頻出の項目は,X-Frame-Options,X-Content-Type-Options,Strict-Transport-Securityの3つになります.午前試験だけではなく,午後試験においても頻出の内容です.(Web系をメインテーマとした大問を選択する場合)
X-Frame-Options
Webページのフレーム埋め込みを規制する設定です.いかなる場合でも埋め込みを厳格に禁止したい場合はDENYを,同一オリジン内のみフレーム埋め込みを許可する場合はSAMEORIGINを設定します.
フレーム埋め込みを禁止することで,クリックジャッキング攻撃を防ぐことができます.
クリックジャッキング攻撃とは,攻撃者が透明なフレームを被害者のブラウザ上に重ね,被害者に意図しないボタンやリンクをクリックさせる攻撃のことで,被害者が意図しない操作を実行してしまう恐れがあります.
フレーム埋め込みを禁止するため,攻撃者が透明なフレームを被害者のブラウザ上に重ねることができなくなるという仕組みです.
実際に出題された過去問を見てみましょう.
クリックジャッキング攻撃に有効な対策はどれか。
ア cookieに,HttpOnly属性を設定する。
イ cookieに,Secure属性を設定する。
ウ HTTP レスポンスヘッダーに,Strict-Transport-Securityを設定する。
エ HTTPレスポンスヘッダーに,X-Frame-Optionsを設定する。
出典:令和6年度 秋期 情報処理安全確保支援士試験 午前Ⅱ 問14
エが正解です.
X-Content-Type-Options
通常,ブラウザはレスポンスヘッダーのContent-Type属性値に従ってファイルを処理しますが,一部ブラウザの仕様によっては,これを無視してファイル解釈を行う場合があります.
仮に攻撃者が悪意あるJavaScriptを埋め込んだHTMLファイルを画像ファイルであるかのように偽装して配信し,ブラウザがHTMLやスクリプトであると誤認した場合,XSS(クロスサイトスクリプティング)攻撃が成立してしまう恐れがあります.
X-Content-Type-Optionsを設定することで,HTTPヘッダーのContent-Typeで指定されたメディアタイプが強制的に適用されるため,上記のような攻撃を防ぐことができます.
実際に出題された過去問を見てみましょう.今回は,午後問題からの引用になるため,問題文が簡潔になるように改題しています.
X-Content-Type-Options(HTTPヘッダー)を設定した場合の主な効果を説明せよ.
出典:令和6年度 秋期 情報処理安全確保支援士試験 午後 問4(改)
Strict-Transport-Security(HSTS)
Strict-Transport-Security(HSTS)は,HTTPS接続を強制するための設定です.このご時世ですから,Webサイト・WebアプリケーションをHTTPSで公開するのは大前提ですが,併せてHTTPSでのアクセスを強制しておくことも重要です.
.htaccessリダイレクトとの違い(参考)
HTTPでアクセスされたものを単に,HTTPSへリダイレクトすれば良いということであれば,.htaccessでリダイレクト定義しておくのと等価な気もしますが,両者の違いは何でしょうか?
個人的に少し気になったので,より詳細に調べてみました.
HSTSでは,HTTPSアクセスを強制する期間をmax-ageという属性で指定することができます.通常,1年間を設定するケースが多いようです.つまり,HSTSの場合は,「HTTPリクエストが通ってしまう恐れがあるのは,当該Webサイトに初めてアクセスした時だけ」ということになります.
一方,.htaccessでのリダイレクトの場合は,毎回のアクセスの度に一旦はHTTPを許容し,その後HTTPSにリダイレクトされるという流れになります.
従って,HSTSの方がより恒久的な対策であると言えるでしょう.
最後に過去問で振り返ります.先ほどと同様に,午後問題からの引用については簡潔にするため,改題しています.
HSTS(HTTP Strict Transport Security)の説明はどれか。
ア HSTSを利用するWebサイトにWebブラウザがHTTPでアクセスした場合,Webブラウザが当該サイトへのその後のアクセスを強制的にHTTP over TLS(HTTPS)にする。
イ HSTSを利用するWebサイトにWebブラウザがHTTPでアクセスした場合,Webページの文書やスクリプトについて,あるオリジンから読み込まれたリソースから他のオリジンのリソースにアクセスできないように制限する。
ウ HTTPSで通信が保護されている場合にだけ,cookieの属性によらず強制的にcookieを送信する。
エ 信頼性が高いサーバ証明書を有するWebサイトとのHTTPS通信では,Webブラウザに鍵マークを表示する。
出典:令和3年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問15
Strict-Transport-Security(HTTPヘッダー)を設定した場合の主な効果を説明せよ.
出典:令和6年度 秋期 情報処理安全確保支援士試験 午後 問4(改)


