绕过JavaScript清理器



我有一个javascript清理器,我用它们各自的字符编码替换了'<','>'和'&'。

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

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

喜欢<?php echo $col1 . "n" $col2 . "n"; ?>

可以打破这种消毒剂吗?

你的代码可以工作,但它将用单个字符串替换<、>和 &,而不是它们各自的编码字符串。它也可能效率不高,因为有一种浏览器原生方法,createTextNode .

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

http://shebang.mintern.net/foolproof-html-escaping-in-javascript/

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

最新更新