如何在没有'='和'>'的情况下使用xss?

时间:2016-06-01 04:35:34

标签: javascript html xss

HTML code:

<html>
  <script>
    input = input.replace(/[=>]/g, '');
    document.write('<article>'+input+'</article>');
  </script>
</html>

代码中的input是用户输入的内容(任意字符串),我正在尝试alert(1)。 如你所见,'='和'&gt;'被禁用了,我怎么能实现呢?

2 个答案:

答案 0 :(得分:2)

只能过滤= OR >的正则表达式可以通过例如<script>alert(0);</script><img src=x onerror="javascript:alert(0)"<。但是,我不知道您的正则表达式是否会从输入中删除=>

答案 1 :(得分:1)

在我看来,你没有充分理由采用hacky XSS预防策略。

如果要将值输出为原始HTML,则表明您希望允许用户在其输入中使用HTML。但是,如果没有=>,则很难有任何有意义的HTML。

如果您只想让用户输入纯文本,那么请妥善处理,您应该没问题:

var div = document.createElement('div');
div.textContent = input;
document.write('<article>' + div.innerHTML + '</article>');

正如Bergi在下面指出的那样,如果您不仅限于使用document.write(),那么最好使用DOM操作。

document.body.appendChild(document.createElement('article')).textContent = input;