本文へ移動

基本情報技術者試験

くろすさいとすくりぷてぃんぐたいさく

クロスサイトスクリプティング対策

Countermeasures against Cross-site Scripting

Webサイトの入力フォーム等から受け取ったデータを、表示時にHTMLタグとして解釈されないよう無害化する手法です。

詳しい説明

1. 定義

クロスサイトスクリプティング対策とは、クロスサイトスクリプティングを防ぐための根本的な対策で、ユーザーが入力したデータをそのままWebページに表示させず、無害化する手法です。この無害化の手法がセキュリティ対策の基本となります。

2. 仕組みと種類

具体的には、HTMLタグや特殊文字を無効化するエスケープ処理を実装します。入力されたデータの文字を実体参照(例えば「<」を「&lt;」)に置換し、ブラウザがスクリプトとして解釈しないように制御します。

また、Cookieの属性を適切に設定することも重要です。例えばHttpOnly属性を付与することで、スクリプトからCookieにアクセスできないようにし、万が一スクリプトが実行されても情報の窃取を防ぐ多重的な防御策がとられます。

4. 紛らわしい語との違い

入力値チェック(バリデーション)はデータ形式の確認であり、無害化(エスケープ)とは目的が異なります。両方の対策を組み合わせることが推奨されますが、表示時のエスケープがクロスサイトスクリプティング防止の直接的な対策です。

5. 身近な例

ブログのコメント欄など、ユーザーが入力した内容を表示する機能があるWebサイトでは、必ずエスケープ処理が組み込まれています。これにより、仮に悪意あるスクリプトが投稿されても、ブラウザ上では単なる文字列として表示されるだけになり、攻撃は無効化されます。

試験で問われること

基本情報技術者試験

  • 対策の中心は出力するときのエスケープです。不等号や引用符など、HTMLとして意味を持つ文字を文字参照へ置き換え、スクリプトとして解釈されないようにします。
  • 出力する場所によって必要な処理が変わります。要素の内容、属性の値、URLの中、スクリプトの中では、危険な文字と置き換え方がそれぞれ違います。入力のときの検査だけでは足りません。
  • 補助の対策として、CookieにHttpOnly属性を付けてスクリプトからの読み出しを防ぐこと、Content Security Policyで実行できるスクリプトの出どころを絞ることが挙げられます。
  • ITパスポート試験や情報セキュリティマネジメント試験では、実装レベルで欠かせない知識として扱われます。特に、エスケープ処理やCookie属性の設定は、試験で「どのような対策が有効か」という選択肢として繰り返し登場します。

最終更新日: 2026/09/23