DOMベースのXSS

検索画面で、検索した文字列を

//keywordはクエリ
document.write(keyword);や

document.innerHTML=keyword;

こうしてエスケープ処理せずに表示するとkeywordにscriptタグが書けるのでXSSが可能な場合がある。

 

安全なやり方

文字表示用のdivを作っておき、
var div = document.getElementById('query_string');

createTextNode()によって、HTMLがエスケープ処理された子要素を作り、

var text_node = document.createTextNode(keyword);

それをdivに追加する。
div.appendChild(text_node);