[サイバー攻撃大辞典 トップへ]

クロスサイトスクリプティング(XSS)


スポンサー リンク

説明


入力フォーム及び入力結果を何らかの形式で画面に表示する機能があり、そこの入力フォームのチェックに不備が存在するとする。JavaScriptのDOMなどを使用して、悪意のWebページを表示させ情報漏えいなどに導く。
あるいはURLのGETパラメータやURLのファイル名などにスクリプトや特殊文字を埋め込み、結果として悪意のコードを実行させる。


攻撃例


・ターゲットサイトのWebフォーム脆弱性を利用してcookieを悪意のサイトに引数として送付するリンクを作成する。
・ターゲットサイトに偽のアンケートフォームを作成。送信ボタンで悪意のサイトのcgiを実行し、引数として個人情報を盗み取る。


対策


・入力の特殊文字をすべてエスケープ処理(サニタイジング)する。
・入力値のチェック。そもそも特殊記号が不要な入力の場合は、エラー処理するか特殊記号をすべて削除する。スクリプトが不要な場合はスクリプト部分を削除するか、全角文字に変換する。SCRIPT → SCRIPT。あるいは意味の無い言葉に変換する。SCRIPT → xSCRIPT
・サーバ側の入力値チェック(クライアント側での入力値チェックはブラウザ側で無効化することが可能なので意味がない)
・URLを出力する場合は"http"や"https"から始まるURLのみ許可する。(URLにもスクリプトコードを指定することが可能であるため。例:javascript:)
・cookieには HttpOnly attribute を付加する。 この属性を持つcookie はスクリプト(JavaScriptなど)からアクセスできない。(クロスサイトスクリプティングの攻撃目標の一つにJavaScriptを埋め込んだcookieの盗難があるため、その防御)
・スクリプトを動的生成しない。(<script>〜</script>の中身を動的生成しない)
・スタイルシート(CSS)を外部サイトから取り込まない。スタイルシートの一部の仕様ではコードが実行可能であるため、悪意のスタイルシートを取り込み悪意のスクリプトを実行される可能性がある。(例:IE独自仕様のCSSのexpression()によるスクリプト実行機能)
・Content-Typeフィールドに文字コードをセットする。文字コードを指定しない場合、設定によってはブラウザ側で自動的に文字コードを判断し、解釈する。解釈した結果、悪意のスクリプトコードが表示され実行される。この場合、文字コード解釈前にXSS対策を行っていても、異なった文字コードでチェックされるため、XSSを検出しない可能性がある。


スポンサー リンク






[サイバー攻撃大辞典 トップへ]


本サイト内掲載されている情報は、誰もその正当性は保証しません。独自の調査により判明した事項を記載しており、内容に誤りがある可能性があります。
内容により発生したいかなる損害は誰も補償しません。自己責任で参考として閲覧してください。
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) securitychecklist.net 2917