[JavaScript]DOM / DOM based XSS
[JavaScript]
DOM(Document Object Model)
- HTML文書をオブジェクトとして読み込んで操作するための仕組み
- Documentオブジェクトが持つ要素の構造そのもの、あるいはそれらにアクセスしたり操作したりする機能
XSS(Cross Site Scripting)脆弱性
- 攻撃者の悪意ある入力データ(JavaScriptなど)がサーバサイドでのエンコードや削除をすり抜けてクライアントにアウトプットされるというもの
XSSのタイプ
- 悪意ある入力データが直ちに画面に出力される(サーバサイドを経由)
- 悪意ある入力データが一旦サーバにデータとして保存された後に画面に出力される(サーバサイドを経由)
- DOM Based XSS(サーバサイドを経由しない)
DOM based XSS XSS脆弱性のひとつ
- 文字そのままを書き出すメソッドやプロパティを使うと、そこにDOM based XSSが可能になる余地が生まれる(document.write()やinnerHTML)
- textContentプロパティを使う(取得した要素の「コンテンツ」を表す)
[作成例 その1]
p要素の部分に、現在の日時を表示する
[作成例 その2]
1冊2,400円の本の消費税込みの金額をブラウザに表示する
[作成例 その3]
1冊の本の消費税込みの金額をブラウザに表示する
[作成例 その4]
表を作成する
[作成例 その5]
わかりやすく日時を表示する