【问题标题】:Disable urlbar filter - Firefox 28禁用 urlbar 过滤器 - Firefox 28
【发布时间】:2015-04-28 09:21:55
【问题描述】:

我想在 Firefox 版本上演示基于 DOM“本地”的跨站点脚本。 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=&lt;script&gt;alert(document.cookie)&lt;/script&gt;

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

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

有什么办法可以让这个脚本在 Firefox 中工作吗?

【问题讨论】:

    标签: javascript security firefox browser xss


    【解决方案1】:

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

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

    在提取的子字符串上调用decodeURIComponent() 会使示例正确地易受攻击(!)。 (虽然一般来说可靠地提取查询参数有点复杂。)

    【讨论】:

    • 我尝试在脚本中添加decodeURIComponent()&lt;SCRIPT&gt; var pos=document.URL.indexOf("jmeno=")+6; pos = pos.decodeURIComponent(pos); document.write(document.URL.substring(pos,document.URL.length)); &lt;/SCRIPT&gt;,但现在我收到错误“pos.decodeURIComponent is not function”
    • pos 是一个数字,字符串中的索引。您将对提取的子字符串进行解码。
    猜你喜欢
    • 1970-01-01
    • 2014-01-23
    • 2017-09-20
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2013-01-30
    • 2015-10-08
    • 2016-12-12
    相关资源
    最近更新 更多