【问题标题】:securely strip html tags in javascript with whitelist使用白名单安全地去除 javascript 中的 html 标签
【发布时间】:2013-08-22 01:20:05
【问题描述】:

我想从 javascript 中的字符串中去除几乎每个 html 标记,只允许几个基本标记
(并剥离它们的属性)以防止 Cross-Site-Scripting

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) If not:如何避免此类问题,但仍然使用 DOM?

【问题讨论】:

    标签: javascript security dom xss


    【解决方案1】:

    【讨论】:

    • 这个!写自己的东西是非常具有挑战性的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2011-03-11
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多