Skip to content

为什么跳转外链需要一个中间页提示?

背景

在很多网站,比如掘金、知乎等,点击外链时,都会跳到一个中转页,提示你要跳转第三方页面,为什么需要这样处理?

为什么

安全问题

在以前的浏览器版本,通过点击链接时包含 _blank 属性的,跳转后,第三方网站可以通过 window.opener 获取到跳转前网站的 window,从而可以通过代码的方式控制前网站。这个漏洞在后续被修复了。

现在要获取到 window.opener 对象,有多个限制:

  1. window.opena 标签,需要包含 rel=opener 属性
  2. 跳转的链接需要同源

并且通过这种中间缓冲,让用户手动复制粘贴、从而打开网站的方式,可以屏蔽调 referrer,让第三方网站不知道来源网站

更好的控制

  1. 在跳转前有一个中间缓冲,网站可以提前进行安全检查,并通过前端提示的方式,更好的告知用户跳转风险
  2. 方便数据统计
  3. 可以对跳转的 URL 进行控制,比如增加一些业务参数

拦截

对于 C 端网站,可以通过这种方式拦截竞争对手

如何实现

通常有这种链接跳转到第三方网站的,大部分都是用户输入的富文本内容,这时候可以在用户提交内容的时候进行文本替换即可。

参考资料

  1. mdn - opener
  2. 99% 的网站都“被中招” - 有史以来最被低估的漏洞