我正在测试一个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)
我想知道为什么第一个脚本不起作用.
很可能该网站用HTML实体替换双引号或尝试以某种其他方式转义它们使它们不适合JavaScript.使用时,String.fromCharCode(...)您不必使用任何引号,以便它可以工作.它获取字符串字符的ASCII代码列表,并在运行时创建一个字符串.所以不需要任何引用.
避免这种XSS的正确的方法是,以取代<与<-这样的脚本标记不能创建在所有.
请注意,在清理包含HTML的数据时>,"也&应该将它们替换为各自的HTML实体!但是,<假设在HTML属性中不能使用不受信任的数据(这是"需要消毒的地方),则绝对只需要打败XSS攻击
| 归档时间: |
|
| 查看次数: |
10571 次 |
| 最近记录: |