[英]Javascript sanitization: The most safe way to insert possible XSS html string
目前我正在将此方法与 jQuery 解决方案一起使用,以清除可能的 XSS 攻击中的字符串。
sanitize:function(str) {
// return htmlentities(str,'ENT_QUOTES');
return $('<div></div>').text(str).html().replace(/"/gi,'"').replace(/'/gi,''');
}
但我觉得它不够安全。 我想念什么吗?
我在这里尝试了 phpjs 项目的 htmlentities: http ://phpjs.org/functions/htmlentities:425/
但它有点窃听并返回一些额外的特殊符号。 也许这是一个旧版本?
例如:
htmlentities('test"','ENT_QUOTES');
生产:
test&quot;
但应该是:
test"
你是如何通过javascript处理这个的?
如果您的字符串应该是没有 HTML 格式的纯文本,只需使用.createTextNode(text)
/分配给现有文本节点的.data
属性。 无论你放在那里什么都会被解释为文本,不需要额外的转义。
是动态使用 javascript。 字符串来自不受信任的来源。
然后你不需要手动清理它。 使用 jQuery 你可以写
var str = '<div>abc"def"ghi</div>';
$('test').text(str);
$('test').attr('alt', str);
浏览器将为您将数据与代码分开。
示例:http: //jsfiddle.net/HNQvd/
你也应该引用其他字符:
'
"
<
>
(
)
;
它们都可以用于 XSS 攻击。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.