Me pregunto qué tan seguro es usar createHTMLDocument
para realizar el saneamiento de HTML. He intentado implementarlo de esta manera:
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;
}
Parece que funciona bien con todos los ataques XSS que he lanzado (no se ha realizado ninguna evaluación de script ni se han activado solicitudes). Pero tengo la sensación de que podría ser una mala idea, ¿me estoy perdiendo algo?
He creado un jsfiddle si alguien quiere experimentar .