跨站点脚本注入

IBK*_*IBK 6 javascript xss

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

我写的第一个脚本是:

<script >alert("Hello");</script > 
Run Code Online (Sandbox Code Playgroud)

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

<SCRIPT >alert(String.fromCharCode(72,101,108,108,111,33))</SCRIPT >
Run Code Online (Sandbox Code Playgroud)

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

Thi*_*ter 8

很可能该网站用HTML实体替换双引号或尝试以某种其他方式转义它们使它们不适合JavaScript.使用时,String.fromCharCode(...)您不必使用任何引号,以便它可以工作.它获取字符串字符的ASCII代码列表,并在运行时创建一个字符串.所以不需要任何引用.

避免这种XSS的正确的方法是,以取代<&lt;-这样的脚本标记不能创建在所有.

请注意,在清理包含HTML的数据时>,"&应该将它们替换为各自的HTML实体!但是,<假设在HTML属性中不能使用不受信任的数据(这是"需要消毒的地方),则绝对只需要打败XSS攻击