function escapeHtml(s) { return s.toString() .replace(/&/g, '&') .replace(//g, '>'); } function escapeAttr(s) { return s.toString() .replace(/'/g, '%22') .replace(/"/g, '%27'); } function test() { var tainted = window.name; var elt = document.createElement(); elt.innerHTML = "" + escapeHtml(tainted) + ""; // OK elt.innerHTML = "
" + escapeAttr(tainted) + "
"; // NOT OK, but not flagged }