javascript – 为什么框架破解者跨域运作,您可以有条件地使用框架断点器?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么框架破解者跨域运作,您可以有条件地使用框架断点器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近一直在调查 frame breaking代码,并且遇到了一些与 same origins policy有关的非常奇怪的行为,我无法理解.

假设我在域A上有一个Breaker.html页面,在域B上有一个Container.html页面.示例框架代码将进入Breaker.html,如下所示:

if (top !== self) top.location.href = self.location.href;

这将成功地将Breaker.html从Container.html中删除,但我不明白为什么它应该.从我对同一起源政策的阅读,top.location不可访问,因为Container.html位于与Breaker.html不同的域上.即使是weirder,似乎top.location只写:

// Fails if Container.html is on a different domain than Breaker.html
alert(top.location);

这对我来说是有问题的,因为我正在尝试编写允许我的页面位于iframe中的代码,但只有当它的父级(或者在配置的允许域上)处于同一个域上时.然而,似乎不可能确定这一点,因为同一起源的政策拒绝我访问父母的位置.

所以我有两个问题,基本上是:

>为什么上述框架代码可以工作?
>有什么办法有条件地破帧,还是唯一可以做的检查是顶级!==自我? (特别是,我想要能够阅读域名,以便我可以提供一个允许的域名列表,只需检查我是否在同一个域中也不会是理想的.)

解决方法

你的答案为1:在安全性方面,读访问和写访问有很大的区别.能够读取top.location.href是一个安全问题.能够写入top.location.href不是.

对于您的问题的答案,我不知道javascript足够好,以确保,但一个想法将是假设,如果阅读top.location失败(检查异常),它是在一个不同的域.

原文链接:https://www.f2er.com/js/151646.html

猜你在找的JavaScript相关文章