sqsq120 テクニカブログ

html css javascript 多めの備忘録

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

上記のパラメータ付与でアラートが表示された。
ここにクッキーの値を引き抜くスクリプトなんかを入れられたりするとユーザデータが漏洩してしまう。
 
バリデートはサーバサイドだけの仕事と思わず、
文字パターン・文字数チェック、正規表現チェックなどを行うべき。
そんなにムズカシイことではないので頭の片隅においておこーっと。