我有一个javascript清理工具,我将其替换为'<&#;;'>'和'&'用各自的字符编码。
str.replace(/[&<>]/g, encoding);
此已清理的数据将插入到数据库中,然后呈现为HTML。
像,
<?php echo $col1 . "\n" $col2 . "\n"; ?>
是否可以打破这种消毒剂?
答案 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以防止这种编码。在后端执行此操作会更加安全。