我可以在跨域iframe中安全地使用HTML5 History API吗?

时间:2014-06-30 04:41:12

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

我有一个用户HTML 5 History(pushState等)的Web应用程序。我希望这个应用程序可以在跨域iframe中加载(有点像FB或Twitter iframe)。 HTML的一个片段(带有必需的iframe标签)可以插入到任何页面中,此页面将包含我的应用程序的iframed版本。例如,如果我的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');

1 个答案:

答案 0 :(得分:0)

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

也就是说,可能存在一些怪癖,使得www.evil.com能够在未来版本的流行浏览器中获取或test URLs - 这一切都取决于将来发现的漏洞。由于您无法解释未来的浏览器错误,我建议您继续进行此访问应该受到保护。如果发现任何漏洞,您可以指示您的用户使用其他浏览器,直到他们当前的漏洞被修复。

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

你应该用其他东西来保护你的安全URL(例如安全会话cookie),所以如果邪恶的网站抓住它,它将来不能使用它。