photo credit: XSS attack on YouTube via photopin (license)
安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構の、「クロスサイト・スクリプティング」から一部抜粋する。(この資料はPDFでしか提供されていない)
目次
注意が必要なウェブサイトの特徴
運営主体やウェブサイトの性質を問わず、あらゆるサイトにおいて注意が必要な問題です。Cookie を利用してログインのセッション管理を行っているサイトや、フィッシング詐欺の攻撃ターゲットになりやすいページ(ログイン画面、個人情報の入力画面等)を持つサイトは、特に注意が必要です。
- この脆弱性が生じやすいページの機能例
- 入力内容を確認させる表示画面(会員登録、アンケート等)
- 誤入力時の再入力を要求する画面で、前の入力内容を表示するとき ・ 検索結果の表示
- エラー表示
- コメントの反映(ブログ、掲示板等) 等
1) HTML テキストの入力を許可しない場合の対策
根本的解決
- (i) ウェブページに出力する全ての要素に対して、エスケープ処理を施す。
- (ii) URL を出力するときは、「http://」や 「https://」で始まる URL のみを許可する。
- (iii) <script>…</script> 要素の内容を動的に生成しない。
- (iv) スタイルシートを任意のサイトから取り込めるようにしない。
保険的対策
- (v) 入力値の内容チェックを行う。
2) HTML テキストの入力を許可する場合の対策
根本的解決
- (vi) 入力された HTML テキストから構文解析木を作成し、スクリプトを含まない必要な要素のみを抽出する
保険的対策
- (vii) 入力されたHTMLテキストから、スクリプトに該当する文字列を排除する。
3) 全てのウェブアプリケーションに共通の対策
根本的解決
- (viii) HTTP レスポンスヘッダの Content-Type フィールドに文字コード(charset)を 指定する。
保険的対策
- (ix) Cookie情報の漏えい対策として、発行するCookieにHttpOnly属性を加え、 TRACE メソッドを無効化する。
- (x) クロスサイト・スクリプティングの潜在的な脆弱性対策として有効なブラウザの機能を有効にするレスポンスヘッダを返す。
- X-XSS-Protection
- Content Security Policy
関連するCWE
- CWE-79: クロスサイト・スクリプティング(XSS)
- CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)
参考URL
- IPA: 知っていますか?脆弱性 (ぜいじゃくせい) 「2. クロスサイト・スクリプティング」
- IPA: テクニカルウォッチ 『DOM Based XSS』に関するレポート
- JPCERT/CC: HTML5 を利用した Web アプリケーションのセキュリティ問題に関する調査報告書