我想在Firefox上演示DOM“基于本地”的跨站点脚本。 28。
我在index.php上有这个脚本
<SCRIPT>
var pos=document.URL.indexOf("jmeno=")+6;
document.write(document.URL.substring(pos,document.URL.length));
</SCRIPT>
我想通过打开网址来运行XSS
www.mydomain.com/index.php?jmeno=<script>alert(document.cookie)</script>
在IE11中,我只是在安全性设置和脚本工作中禁用XSS过滤器。
在Firefox中进行了改进,禁用此解决方案的解决方案:browser.urlbar.filter.javascript
中的about:config
。该解决方案无效。脚本总是被转义。
有没有解决方法如何在Firefox中使用此脚本?
答案 0 :(得分:1)
browser.urlbar.filter.javascript
不会尝试从输入的网址中过滤数据,它不是IE误导的反XSS过滤器的类比。它只是在历史查询中显示javascript:
个网址,而且与此无关。
您的示例网址在任何浏览器中都不适用于我,因为字符<
和>
无法包含在网址中。当您输入时,浏览器会自动将它们更正为URL编码版本%3C
和%3E
。因此,当您访问location.href
时,您会获得一个带有%编码尖括号的网址。使用天真的字符串切片处理它会使编码版本留在那里,因此标记不会解析。
在提取的子字符串上调用decodeURIComponent()
会使示例容易受到攻击(!)。 (虽然通常可靠地提取查询参数有点复杂。)