禁用 urlbar 过滤器 - Firefox 28

Disable urlbar filter - Firefox 28

我想在 Firefox ver. 上演示 DOM "Local" 基于跨站脚本。 28.

我在 index.php

上有这个脚本

<SCRIPT> var pos=document.URL.indexOf("jmeno=")+6; document.write(document.URL.substring(pos,document.URL.length)); </SCRIPT>

我想通过打开 URL

运行 XSS

www.mydomain.com/index.php?jmeno=<script>alert(document.cookie)</script>

在 IE11 中,我只需在安全设置中禁用 XSS 过滤器,脚本就可以正常工作。

Altrought 在 Firefox 中有一个解决方案,方法是 禁用 这个过滤器:browser.urlbar.filter.javascript in about:config。此解决方案无效。脚本总是被转义。

有什么解决方案可以让这个脚本在 Firefox 中运行吗?

browser.urlbar.filter.javascript 不会尝试从输入的 URL 中过滤数据,它不是 IE 误导的反 XSS 过滤器的类似物。它只是在历史查找中显示javascript: URLs,与这里无关。

您的示例 URL 在任何浏览器中都不适合我,因为字符 <> 根本无法包含在 URL 中。当您输入它们时,浏览器会自动将它们更正为 URL 编码版本 %3C%3E。因此,当您访问 location.href 时,您会得到一个带有 % 编码尖括号的 URL。使用简单的字符串切片处理它会留下编码版本,因此标签不会被解析。

对提取的子字符串调用 decodeURIComponent() 会使该示例正确易受攻击(!)。 (尽管通常可靠地提取查询参数有点复杂。)