Sto imparando la prevenzione xss tramite questo ppt: http://stash.github.io/empirejs-2014/#/2/23, e ho una domanda in questa pagina.cosa significa "sanitizzazione JavaScript non ti salva da innerHTML"?
si dice "sanificazione JavaScript non ti salva dalla innerHTML", e ho provato un semplice test come questo:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<div id="test"></div>
<script>
var userName = "Jeremy\x3Cscript\x3Ealert('boom')\x3C/script\x3E";
document.getElementById('test').innerHTML = "<span>"+userName+"</span>";
</script>
</body>
</html>
quando ho aperto questo html con il mio browser (Chrome), ho visto solo il nome di "Jeremy", utilizzando F12, ho visto
<div id="test"><span>Jeremy<script>alert('boom')</script></span></div>
Sebbene lo script fosse stato aggiunto ad html, la finestra di avviso non è stata pubblicata.
"La disinfezione JavaScript non ti salva da innerHTML" Penso che questo significhi che la parola "boom" debba essere avvisata. Ho ragione?
"* Ho ragione? *". No. * innerHTML * non esegue script. – RobG
innerHTML * può * essere eseguito per eseguire script tramite l'uso di attributi in linea. –