我想知道createHTMLDocument用于进行 HTML 清理的安全性如何。我试图像这样实现它:
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;
}
它似乎可以很好地处理我抛出的所有 XSS 攻击(没有脚本评估或触发请求)。但我觉得这可能是个坏主意,我错过了什么?
如果有人想尝试,我已经创建了一个jsfiddle 。