绕过javascript清洁剂

时间:2015-03-09 20:41:32

标签: javascript encoding xss

我有一个javascript清理工具,我将其替换为'<&#;;'>'和'&'用各自的字符编码。

str.replace(/[&<>]/g, encoding);

此已清理的数据将插入到数据库中,然后呈现为HTML。

像, <?php echo $col1 . "\n" $col2 . "\n"; ?>

是否可以打破这种消毒剂?

1 个答案:

答案 0 :(得分:0)

您的代码可以使用,但它会替换&lt ;,&gt;和&amp;使用单个字符串,而不是它们各自的编码字符串。它也可能效率不高,因为有一种浏览器原生方法createTextNode

function escapeHtml(str) {
    var div = document.createElement('div');
    div.appendChild(document.createTextNode(str));
    return div.innerHTML;
};

http://shebang.brandonmintern.com/foolproof-html-escaping-in-javascript/

然而,这仍然可能不安全,因为客户端可以修改javascript以防止这种编码。在后端执行此操作会更加安全。