首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript清理:插入可能的XSS html字符串的最安全方法

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

Stack Overflow用户
提问于 2012-07-02 18:48:00
回答 3查看 17.8K关注 0票数 5

目前,我正在使用这种方法与jQuery解决方案,以清除可能的XSS攻击字符串。

代码语言:javascript
复制
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/

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

例如:

代码语言:javascript
复制
htmlentities('test"','ENT_QUOTES');

产生:

代码语言:javascript
复制
test&amp;quot;

但应该是:

代码语言:javascript
复制
test&quot;

你是如何通过javascript来处理这个问题的?

EN

回答 3

Stack Overflow用户

发布于 2012-07-02 19:07:55

如果你的字符串是没有超文本格式的纯文本,只需使用.createTextNode(text)/assigning到现有文本节点的.data属性即可。无论你放在哪里,都会被解释为文本,不需要额外的转义。

票数 3
EN

Stack Overflow用户

发布于 2012-07-02 19:14:09

是动态使用javascript。字符串来自不可信的来源。

这样你就不需要手动清理它了。使用jQuery,您只需编写

代码语言:javascript
复制
​var str = '<div>abc"def"ghi</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​';

​$​('test').text(str);
$('test').attr('alt', str);

浏览器将为您将数据与代码分开。

示例:http://jsfiddle.net/HNQvd/

票数 3
EN

Stack Overflow用户

发布于 2012-07-02 19:11:55

你也应该引用其他字符:

代码语言:javascript
复制
'
"
<
>
(
)
;

它们都可以用于XSS攻击。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11292147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档