帧跳转在页面访问和页面内操作触发页面访问之间表现不同

问题描述 投票:0回答:1

我的简短问题

为什么这个链接不起作用?

https://translate.google.com/translate?sl=ja&tl=en&u=https://www.j-platpat.inpit.go.jp/web/all/top/BTmTopPage

长版

你会注意到https://www.j-platpat.inpit.go.jp/web/all/top/BTmTopPage包含这段代码:

<script type="text/javascript">
    if (self === top) {
        var antiClickjack = document.getElementById("antiClickjack");
        antiClickjack.parentNode.removeChild(antiClickjack);
    } else {
        top.location = self.location; // this part is important!
    }
</script>

如果我们在一个框架中,逃离框架。

现在,当一个人访问谷歌翻译并输入https://www.j-platpat.inpit.go.jp/web/all/top/BTmTopPage作为翻译页面,并点击“翻译”(并可能告诉谷歌该页面不是英文,但是日文)时,会重定向到

https://translate.google.com/translate?hl=en&sl=ja&tl=en&u=https%3A%2F%2Fwww.j-platpat.inpit.go.jp%2Fweb%2Fall%2Ftop%2FBTmTopPage

从那里,它重定向到罚款

https://translate.googleusercontent.com/translate_c?depth=1&hl=en&rurl=translate.google.com&sl=ja&sp=nmt4&tl=en&u=https://www.j-platpat.inpit.go.jp/web/all/top/BTmTopPage&xid=...&usg= ...

显示翻译的网站。

现在,我想链接到已翻译的网站,这对于许多无法逃避iframe的网站是可能的:

https://translate.google.com/translate?sl=en&tl=ja&u=https%3A%2F%2Fwww.nytimes.com%2F

但是,当我访问

https://translate.google.com/translate?hl=en&sl=ja&tl=en&u=https%3A%2F%2Fwww.j-platpat.inpit.go.jp%2Fweb%2Fall%2Ftop%2FBTmTopPage

(或者这个问题的第一个链接),我没有被重定向,直到我再次点击搜索,基本上再次将我重定向到同一页面,然后再转到翻译的网站。

在控制台中,我看到这样的事情,所以似乎涉及XSS保护:

不安全的JavaScript尝试从具有URL“https://translate.google.com ...”的帧启动具有原点'https://translate.googleusercontent.com/translate_c?depth=1&hl=en&rurl='的帧的导航。尝试导航顶层窗口的框架是沙箱,但未设置“允许顶部导航”或“允许顶部导航 - 按用户激活”的标记。

未捕获的DOMException:无法在“位置”上设置“href”属性:当前窗口无权将目标框架导航到“https://translate.googleusercontent.com/translate_c?depth=1&hl=en&rurl= ...”

这是为什么?访问该页面和单击按钮访问同一页面有什么区别?如何重定向,而不是另一个?我能为此做点什么吗? sandbox参数可以提供任何帮助吗?

javascript xss google-translate
1个回答
1
投票

我不确定这是否能解答您的问题,但如果有任何帮助,Internet Explorer和Firefox的XSS保护极其弱。如果它是chrome的沙盒,它将不会在Firefox和Internet Explorer中。此外,普通网站无法阻止您打开链接,因此可能是您的浏览器导致问题。


推荐问答