【问题标题】:Enabling XSS from files hosted on local filesystem从托管在本地文件系统上的文件启用 XSS
【发布时间】:2010-11-28 01:24:39
【问题描述】:

我的文件系统中有 HTML 和 JavaScript 文件,用于正在开发的移动应用程序。当应用程序部署到移动设备时,这些文件将托管在本地文件系统上,其中 XSS 来自 file://is not an issue。此应用程序的一个重要部分是将 XHR POST 请求发送到 RESTful API。

如果发出请求的文件托管在本地文件系统上而不是部署到网络服务器上,那么 XSS 似乎应该是浏览器的安全问题。

是否有人知道浏览器扩展或配置更改会启用本地文件系统上托管的文件的 XSS?

【问题讨论】:

  • 我愿意使用任何有帮助的浏览器。我是 F2​​E,所以我使用很多浏览器。 ;)

标签: javascript browser xss cross-domain


【解决方案1】:

好吧,虽然您将不得不稍微更改服务器和客户端代码,但它不是很干净并且您必须信任服务器,您可以将数据加载为包含对函数的调用的 javascript在你的页面和一个大字符串左右作为参数。 This 似乎是一个很好的例子。

或者,您可以从本地网络服务器提供文件并使用the hostsfiledocument.domain

【讨论】:

  • 我将 JSONP 用于我的 GET 请求。但这不适用于 POST 请求。而且我相信 document.domain 是只读的。我试图避免将我的 API 设置为本地服务器并将我的 html/js 文件部署到同一个域。
  • 但我想知道是否会弄乱主机文件...我可以部署一个本地 Web 服务器并静态提供我的文件,然后将主机文件更改为 127.0.0.1 指向相同的主机名我尝试发布到的 API。
  • @Matthew Taylor:您可以将域local.actualinstallation.com(在hostsfile 中)和实际服务器的域提供给本地服务的文件actualinstallation.com。然后在本地提供的文件中设置document.domain="actualinstallation.com"
  • 所以我尝试了将文件托管在本地服务器上并更改我的主机文件的方法,以便 127.0.0.1 指向 local.example.com。但是,我无法更改 document.domain,因为它是只读的。但我认为这可能只是因为我将发布到 api.example.com,但我仍然收到相同的 XSS 错误:XMLHttpRequest 无法加载api.example.com/restful/url。 Access-Control-Allow-Origin 不允许来源local.example.com。我猜子域不算同源:stackoverflow.com/questions/929677/…
【解决方案2】:

我找到了一个有用的链接,它帮助我执行从本地主机到另一个域的 POST 请求。这是一个Firefox hack,它允许来自本地主机上托管的文件的 XSS。它并不完美,但它帮助我开发了这个东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-30
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多