浏览器通常不允许子选项卡/窗口使用脚本关闭其开启器。然而,它们确实允许孩子改变开启标签/窗口的位置。
这导致了一个奇怪的解决方法,您可以创建一个页面,该页面在加载后立即用脚本关闭,然后将父选项卡/窗口的位置更改为这个新页面,有效地关闭它。
这让我问,什么安全问题导致禁用关闭打开器选项卡/窗口的能力,这种解决方法是否有效地创建了后门?
浏览器通常不允许子选项卡/窗口使用脚本关闭其开启器。然而,它们确实允许孩子改变开启标签/窗口的位置。
这导致了一个奇怪的解决方法,您可以创建一个页面,该页面在加载后立即用脚本关闭,然后将父选项卡/窗口的位置更改为这个新页面,有效地关闭它。
这让我问,什么安全问题导致禁用关闭打开器选项卡/窗口的能力,这种解决方法是否有效地创建了后门?
浏览器通常不允许子选项卡/窗口使用脚本关闭其开启器。然而,它们确实允许孩子改变开启标签/窗口的位置。
这并不完全准确。如果您仔细阅读引用的 MDN 文本,它实际上是指 . 的开头,parent
而不是与popup
. 您可能遇到的实际限制是:
因此,在您的具体示例中,popup
是由脚本打开的,但opener
是由用户打开的,因此opener
dclose
本身或popup
.
想象一下有两个弹出窗口的场景
close
d)opener
是用户打开的选项卡)opener
是弹出窗口 1)在这种情况下,弹出 2可以弹出 1。
但是,弹出窗口 1 不能显示用户打开的选项卡,因为这违反了上述规则。close
close
popup
在 Chrome 和 Firefox 中, s 是否与它们的 s 同源并不重要opener
。根据我上面的第一点,可以根据需要更改popup
或location
。close
opener
在 IE11 中,popup
可以close
,parent
但不能更改parent.location
,除非它符合Same Origin policy。(如果您尝试,会出现新的弹出窗口)
另外,我想澄清一下,任何人opener
都可以close
拥有自己的 s 或不受限制地popup
更改它们。location
出于安全原因,对内容的访问popup
仍需遵守同源政策。
这导致了一个奇怪的解决方法,您可以创建一个页面,该页面在加载后立即用脚本关闭,然后将父选项卡/窗口的位置更改为这个新页面,有效地关闭它。...这种解决方法是否有效地创建了一个后门?
要直接回答您的问题,没有这样的解决方法。链接的示例将产生错误:
脚本可能不会关闭不是由脚本打开的窗口。
除非您像我上面解释的那样处于 2-popup 的情况,在这种情况下,它可能popup
只是直接的。不过,在这种情况下,解决方法将是不必要的。close
opener