【问题标题】:Can I safely use the HTML5 History API in a cross domain iframe?我可以在跨域 iframe 中安全地使用 HTML5 History API 吗?
【发布时间】:2014-06-30 04:41:12
【问题描述】:

我有一个用户 HTML 5 History(pushState 等)的 Web 应用程序。我希望这个应用程序可以在跨域 iframe 中加载(有点像 FB 或 Twitter iframe)。可以将 HTML 片段(带有必要的 iframe 标签)插入到任何页面中,并且该页面将包含我的应用程序的 iframe 版本。例如,如果我的 Web 应用程序位于 app.mywebapp.com,aRandomWebsite.com 可能具有以下 HTML 结构

<html>
    <head>
    </head>
    <body>
        <iframe src="https://app.mywebapp.com/"></iframe>
    </body>
</html>

我知道in the past,跨域 iframe 并不完全相互隔离,并且可能会相互混淆某些变量,例如 window.location。我的问题是,如果我在 iframed 应用程序中执行以下代码,父框架(可能非常敌对)是否能够偷看它?

window.history({}, '', 'aSecureRoute/thisIdIsVerySensitive');

【问题讨论】:

  • 我想这是一个悬而未决的问题,关于这对操纵的脆弱性,但目前不是,不是。

标签: javascript security iframe cross-domain html5-history


【解决方案1】:

这应该是安全的,因为跨域 DOM 访问受 Same Origin Policy 保护。

也就是说,在流行浏览器的未来版本中,www.evil.comtest URLs 可能存在一些怪癖,这完全取决于未来会发现哪些漏洞。由于您无法解决未来的浏览器错误,我建议您在此访问应该受到保护的基础上继续进行。如果发现任何漏洞,您可以指导您的用户使用其他浏览器,直到他们当前的浏览器得到修复。

请记住,URL 不应被视为安全,因为它们可以存储在浏览器缓存或历史记录(或添加书签)中,也可以由代理记录(如果不受 HTTPS 保护)或存储在服务器日志中。

您还应该使用其他东西(例如安全会话 cookie)来保护您的安全 URL,因此如果恶意网站抓取了它,那么如果没有 cookie,它就无法在未来使用它。

【讨论】:

  • 感谢您的回答。是的,我知道 URL 不安全,但没有身份验证就不可能“重新访问”该 URL。我担心的是,如果 URL 的路径被暴露,潜在的敌对父页面将能够解析它并推断出,例如,用户 ID 1234 正在查看项目 ID 5678。这是我的信息宁愿保密。
猜你喜欢
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 2012-02-08
  • 2011-03-06
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多