クロスサイトスクリプティングは、攻撃者が用意したスクリプトを、ユーザが信頼する第三者の Web サイトから提供されたものとして、ユーザの Web ブラウザ上で実行させる手法です。 攻撃は、攻撃者のスクリプトを第三者の Web コンテンツ中に紛れ込ませることにより実現されます。紛れ込ませる手法は、次の3種類に分類できます。 - persistent 型 (stored 型、蓄積型) Web サイトが蓄積しているコンテンツ中に紛れ込ませる - non-persistent 型 (reflected 型、反射型) Web サイトが動的に作り出すコンテンツ中に紛れ込ませる - DOM 型 Web ブラウザ内に蓄積しているコンテンツ中に紛れ込ませる persistent 型および non-persistent 型のクロスサイトスクリプティングでは、攻撃スクリプトが必ず Web サイトを経由します。Web アプリケーション側で入力データの検証や出力データの加工を適切に行うことで、意図せぬスクリプトが混入しないよう防止することが可能です。 これに対して DOM 型クロスサイトスクリプティングは、Web ブラウザ内部で行われるデータ構造の操作を悪用した攻撃であり、スクリプト自身が Web サイトを経由するとは限りません。そのような攻撃を防止するためには、Web ブラウザに処理させるコードの内容を注意深く検証し、どのようなデータを処理する場合でも悪用されないようにしておく必要があります。 また、Web ブラウザを使用する場合は、以下のような点に注意しましょう。 - リンクをたどる際、その URL が想定しているドメイン名と異なっていたり、異様に長い URL になっているなど、怪しい兆候がないか確認する習慣をつける - スクリプト実行を抑制する機能を活用する
参考文書(日本語)
-
JPCERT/CC WEEKLY REPORT 2009-05-13
【ひとくちメモ】クロスサイトスクリプティング
https://www.jpcert.or.jp/wr/2009/wr091801.html#Memo
-
JPCERT/CC
技術メモ - 安全な Web ブラウザの使い方
https://www.jpcert.or.jp/ed/2008/ed080002_1104.pdf
参考文書(英語)
-
Web Application Security Consortium
DOM Based Cross Site Scripting or XSS of the Third Kind
http://www.webappsec.org/projects/articles/071105.shtml
-
OWASP
Cross-site Scripting (XSS)
http://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
-
OWASP
DOM based XSS
http://www.owasp.org/index.php/DOM_Based_XSS
Weekly Report 2009-07-08号 に掲載