Mi chiedo quanto sia sicuro usare createHTMLDocument
per eseguire la sanitizzazione HTML. Ho provato a implementarlo in questo modo:
function sanitize(string) {
var elm = document.implementation.createHTMLDocument().body;
elm.innerHTML = string;
// traverse and filter elm to only allow whitelisted elements and attributes
// e.g. use https://github.com/gbirke/Sanitize.js
var cleaned_fragment = whitelist_filter(elm);
elm = document.implementation.createHTMLDocument().body;
elm.appendChild(cleaned_fragment);
return elm.innerHTML;
}
Sembra funzionare bene con tutti gli attacchi XSS che ho lanciato (nessuna valutazione di script o richieste innescate). Ma ho la sensazione che potrebbe essere una cattiva idea, mi manca qualcosa?
Ho creato un jsfiddle se qualcuno vuole sperimentare .