情報処理のWeb教科書―IPA情報処理試験対策のお供に!
トップ 情報処理の知識体系 テクノロジ系 技術要素 セキュリティ 情報セキュリティとは 攻撃手法 サイバー攻撃の種類 クロスサイトスクリプティング(XSS)
クロスサイトスクリプティング(XSS)とは、Webサイトに利用者を誘導して、Webサイトの入力データ処理の欠陥を悪用し、 利用者にブラウザで悪意のあるスクリプトを実行させる攻撃です。XSSの対策はサニタイジング処理が基本となります。
この記事の目次です。
クロスサイトスクリプティングに関連したIPA情報処理試験の過去問題
クロスサイトスクリプティングとは、Webサイトに利用者を誘導して、Webサイトの入力データ処理の欠陥を悪用し、 利用者にブラウザで悪意のあるスクリプトを実行させる攻撃です。
攻撃の主な目的は以下になります。
Webアプリケーションのフォームのフィールドに、 悪意のあるJavaScriptコードを含んだデータを入力するなどしてWebサイトの入力データ処理の欠陥を悪用してスクリプトが実行される仕掛けをつくります。 仕掛けを作ったURLを巧みに誘導して被害者に実行させます。
クロスサイトスクリプティング対策には、悪意のある入力コードのサニタイジング処理を行うのが基本です。 Webページに入力されたデータの出力データが、HTMLタグとして解釈されないように処理を行ってサニタイジングするのが有効です。
基本的には「>」「<」「"」「'」の文字列を他の文字に置き換えるのが対策となりますが、 URLの「data:<base64コードなど>」やJavaScriptライブラリの機能の悪用など対策が行えない場合があります。
アプリケーションの作りなどの要因で攻撃パターンの考慮漏れやサニタイジング処理の漏れがある恐れがあり、 Cookie情報が摂取されないようにするHTTPレスポンスヘッダのセキュリティ設定やWebアプリケーションファイアウォール(WAF)など多層で対策するべきです。
HTTPレスポンスヘッダ―のパラメータの「X-XSS-Protection」を設定することで、ブラウザのクロスサイトスクリプティング防止機能を有効にするよう指示が行えます。
設定する場合、利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always append X-XSS-Protection: "1; mode=block"」を記述します。
IISで設定する場合は以下の方法があります。
名前:X-XSS-Protection/値:1; mode=block
以下の設定を「web.config」として保存し、公開領域に置きます。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <httpProtocol> <customHeaders> <add name="X-XSS-Protection" value="1; mode=block" /> </customHeaders> </httpProtocol> </system.webServer> </configuration>
IEでは、画像ファイルなどもHTMLと判定するスニッフという処理があり、HTMLとして認識しないように設定しておくと安心です。 X-Content-Type-Optionsでブラウザにスニッフしない指示が与えられます。
設定する場合、利用Webサーバやプログラムなど環境に合わせて設定方法を調べる必要があります。
Apache HTTP Serverで設定する場合は、設定ファイルのhttpd.confあるいは.htaccessで設定する場合は「Header always append X-Content-Type-Options: "nosniff"」を記述します。
IISで設定する場合は以下の方法があります。
名前:X-Content-Type-Options/値:nosniff
以下の設定を「web.config」として保存し、公開領域に置きます。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <httpProtocol> <customHeaders> <add name="X-Content-Type-Options" value="nosniff" /> </customHeaders> </httpProtocol> </system.webServer> </configuration>
HTTPレスポンスヘッダにセキュリティ対策用のパラメータがあります。 Set-Cookieのsecure、httplonlyなどHTTPレスポンスヘッダのセキュリティ設定一覧をまとめています。
レスポンスヘッダの設定やWAFなどはすり抜けるケースがありますので、基本的にはアプリケーション側でサニタイジングしておく必要があります。 サニタイジングとは、英語のsanitizingで「無害化」「無害化する」という意味の用語です。
たとえば、XSSのサニタイジングとしては、Webページに入力されたデータの出力データが、HTMLタグとして解釈されないように 「>」「<」「"」「'」の文字列を他の文字に置き換えて、害が発生しないようにすることをサニタイジングといいます。
PHPの場合は、htmlspecialchars()関数で入力値をページに出力する値をエスケープできます。
<?php echo $value ?>
<?php echo htmlspecialchars($value) ?>
WordPressはPHPで実装されたCMSです。 WordPressのテーマなどを実装する場合は、XSSを意識したコーディングが必要です。
PHPなのでhtmlspecialchars()関数が利用できますが、WordPress独自のesc_html()関数が利用できます。
以下ではクロスサイトスクリプティングに関連したIPA情報処理試験の過去問とその解説をまとめています。
情報システムへの外部からの不正な行為や手法など、サイバー攻撃の種類と対策知識をまとめています。またサイバー攻撃の被害額、被害件数、被害事例をまとめた公共機関の資料のリンクもまとめています。
情報セキュリティとは何か、情報セキュリティのテキストコンテンツをテーマに知識をまとめています。またIPAの情報処理試験の情報セキュリティ関連の問題も解説しています。
情報処理試験対策用のサイトオリジナル教科書をテーマにテクノロジ系の知識をまとめています。
Copyright (C) 2010-2023 情報処理のWeb教科書. All Rights Reserved. Loarding…