6

我正在测试一个 Web 应用程序。我想编写一个XSS显示警报的脚本"Hello"

我写的第一个脚本是:

<script >alert("Hello");</script > 

但没有显示警报"Hello"。我发现XSS有效的脚本是

<SCRIPT >alert(String.fromCharCode(72,101,108,108,111,33))</SCRIPT >

我想知道为什么第一个脚本不起作用。

4

1 回答 1

8

该站点很可能会用 HTML 实体替换双引号,或者尝试以其他方式将它们转义,从而使它们不适用于 JavaScript。使用时,String.fromCharCode(...)您不必使用任何引号,因此它会起作用。它获取字符串字符的 ASCII 代码列表,并在运行时从它们中创建一个字符串。所以不需要任何引用。

避免这种 XSS 的正确方法是替换<&lt;- 这样根本无法创建脚本标记。

请注意,在清理包含 HTML 的数据时>"&应将 和 替换为各自的 HTML 实体!但是,只有在 HTML 属性中不能使用不受信任的数据(这是需要清理<的地方)的情况下,才绝对需要击败 XSS 攻击"

于 2013-02-28T12:36:16.590 回答