繁体   English   中英

Javascript 清理:插入可能的 XSS html 字符串的最安全方法

[英]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,'&quot;').replace(/'/gi,'&apos;');   
}

但我觉得它不够安全。 我想念什么吗?

我在这里尝试了 phpjs 项目的 htmlentities: http ://phpjs.org/functions/htmlentities:425/

但它有点窃听并返回一些额外的特殊符号。 也许这是一个旧版本?

例如:

htmlentities('test"','ENT_QUOTES');

生产:

test&amp;quot;

但应该是:

test&quot;

你是如何通过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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM