DOM-based XSSの話
DOM-based XSSの話
お馴染みのXSS(クロスサイトスクリプティング)の話。
フォームなんかに悪意あるコードを仕込んで表示させるっていうアレである。
※ 詳しくはこちら
今回はサーバサイドのバリデータではなく、
getパラメータの受け取りがイケてなくて攻撃されるって例。
具体的にはこんな感じで作っちゃうと攻撃成立。
var param = location.search.substr(1).split("&"); var p = new Array(); for(var i = 0; i < param.length; i++) { var r = param[i].split("="); p[r[0]] = r[1]; } window.location = decodeURIComponent(p["url"]);
このファイルに
#?url=javascript%3aalert%28%22attack%22%29%3b
上記のパラメータ付与でアラートが表示された。
ここにクッキーの値を引き抜くスクリプトなんかを入れられたりするとユーザデータが漏洩してしまう。
バリデートはサーバサイドだけの仕事と思わず、
文字パターン・文字数チェック、正規表現チェックなどを行うべき。
そんなにムズカシイことではないので頭の片隅においておこーっと。