我有一个 Web 应用程序,用户 HTML 5 History (推送状态等)。我希望这个应用程序能够在跨域 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');
最佳答案
这应该是安全的,因为跨域 DOM 访问受到 Same Origin Policy 的保护.
也就是说,可能存在一些怪癖,使得 www.evil.com
能够抓取或 test URLs在流行浏览器的 future 版本中 - 这完全取决于将来发现的漏洞。由于您无法解释 future 的浏览器错误,因此我建议您在应该保护此访问的基础上继续操作。如果发现任何漏洞,您可以引导用户使用其他浏览器,直到当前浏览器得到修复。
请记住,URL 不应被视为安全的,因为它们可以存储在浏览器缓存或历史记录中(或添加书签),也可以由代理记录(如果不受 HTTPS 保护)或存储在服务器日志中。
您还应该使用其他东西(例如安全 session cookie)来保护您的安全 URL,因此,如果邪恶网站获取了它,那么将来如果没有 cookie,它就无法使用它。
关于javascript - 我可以在跨域 iframe 中安全地使用 HTML5 History API 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24483020/