我有一个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 以防止这种编码。在后端执行此操作会安全得多。