使用白名单在javascript中安全地删除html标记

时间:2013-08-22 01:20:06

标签: javascript security dom xss

我想在javascript中从字符串中删除几乎每个html标记,只允许几个基本标记
(&剥离其属性)以防止跨站点脚本

A lot of people说,不应该使用javascript,因为客户端可能禁用了javascript,导致过滤器中断。但是我的整个项目依赖于javascript,并且没有禁用javascript的客户端会看到输出,而且我无法在服务器端执行此操作。

(1)在这种情况下,我是否有权假设它可以安全地完成?

bobince建议to use the DOM(而非RegEx)过滤潜在的不安全输入。我当然不是XSS专家,但因为他的例子取决于在过滤器完成他的工作之前插入到DOM 的字符串,我可以想象它可能是不安全的,因为类似:

var unsecureString = '<img src=".." onload="alert(\'bad\')" />';
$('#alice').update(unsecureString);
filterNodes($('#alice'), {p:[],a:['href']}); // see link above

(2)我可以肯定,上面的不良事件不会发生吗?

(3)如果不是:如何避免此类问题,但仍然使用DOM?

1 个答案:

答案 0 :(得分:1)