什么是 noreferrer 标签?
简而言之,noreferrer 标记在单击链接时隐藏引用者信息。如果有人从使用此标记的链接到达您的网站,您的分析将不会显示谁提到该链接。相反,它会错误地显示为您的统计流量报告中的直接流量。
这个 noreferrer 标签在 WordPress 早些版本中是自动添加到 A 标签中,但实际上这并不是 WordPress 本身所做的改变,而是由 WordPress 使用的富文本编辑器 TinyMCE(WordPress 默认编辑器)造成的。目的就是防止网络钓鱼攻击,垃圾邮件发送者劫持您的网页,可能会访问您的网站或访问机密信息。不过现在 TinyMCE 只强制插入 noopener 标签,已经不会强制插入“noopener noreferrer”标签。
什么是 noopener 标签?
rel =“noopener”在新标签中打开链接时基本上不会打开它的开启者。这意味着,它的 window.opener 属性将是在新标签中打开一个链接时,而不是从那里的链接打开同一个页面为空。
rel =“noopener”一般都是搭配 target=”_blank”同时使用,因为 target=”_blank” 也是一个安全漏洞:新的页面可以通过 window.opener 访问您的窗口对象,并且它可以使用 window.opener.location = newURL 将您的页面导航至不同的网址。新页面将与您的页面在同一个进程上运行,如果新页面正在执行开销极大的 JavaScript,您的页面性能可能会受影响。
什么是 nofollow 标签?
nofollow 标签就是告诉百度、Google 等搜索引擎不要通过使用此标记的链接传递任何值。大多数情况下,nofollow 标签用于阻止“PageRank”传递到网站上的管理页面(例如,您不需要排名的登录页面),或者根据 Google 的付费使用广告客户的 URL 链接政策。除了用于付费和管理链接之外,nofollow 标记通常用于限制 PageRank 通过博客评论或留言簿条目中的链接传递。在链接到信誉或可信度可能成为问题的网站时,您也可以使用 nofollow。
noopener 和 noreferrer 标签如何提高安全性?
Noopener 和 noreferrer 标签是阻止漏洞利用的主动权,该漏洞利用在新标签中打开的链接。很少有成员知道这个漏洞,因此 WordPress 采取这一举措来提高用户的安全性。反向 Tabnabbing 是一种网络钓鱼攻击,攻击者用恶意文档替换合法且可信的页面选项卡。
当有人打开新选项卡时,网络钓鱼者会通过 window.opener 检测引荐网址,并使用 window.opener.location = newURL 推送新的网址。
这样,没有人会有陷入网络钓鱼攻击的线索,因为他们已经从可靠的来源(WordPress 建立的网站)到达网站。而使用 rel =“noopener”会阻止网络钓鱼者获取有关链接源和与 referrer 链接相关的任何数据的信息。
nofollow、noopener 和 noreferrer 标签对SEO 有什么影响?
这是许多博主站长们关心的问题,因为大家都知道 nofollow 标签会影响 Google 等搜索引擎的抓取和索引链接以及传递 PageRank 的能力,所以大家都比较担心 noopener 标签和 noreferrer 标签也会这样做。
其实,noopener 标签和 noreferrer 标签对 SEO 没有任何影响。简而言之,它们运行在分析/浏览器级别,而不是搜索引擎级别。虽然在监控反馈流量方面存在严重问题,但它不会影响站点内容的索引、抓取或排名方式。
标签通常会配合着使用 noopener
, noreferrer
及 nofollow
这些属性, 它们的作用及用法如下。
noopener
当给链接加上 target="_blank"
后, 目标网页会在新的标签页中打开, 此时在新打开的页面中可通过 window.opener
获取到源页面的 window
对象, 这就埋下了安全隐患。
具体来说,
- 你自己的网页 A 有个链接是打开另外一个三方地址 B
- B 网页通过
window.opener
获取到 A 网页的window
对象, 进而可以使得 A 页面跳转到一个钓鱼页面window.opener.location.href ="abc.com"
, 用户没注意地址发生了跳转, 在该页面输入了用户名密码后则发生信息泄露
为了避免上述问题, 引入了 rel="noopener"
属性, 这样新打开的页面便获取不到来源页面的 window
对象了, 此时 window.opener
的值是 null
。
所以, 如果要在新标签页中打开三方地址时, 最好配全着 rel="noopener"
。
noreferrer
与 noopener
类似, 设置了 rel="noreferrer"
后新开页面也无法获取来源页面的 window
以进行攻击, 同时, 新开页面中还无法获取 document.referrer
信息, 该信息包含了来源页面的地址。
通常 noopener
和 noreferrer
会同时设置, rel="noopener noreferrer"
。
既然后者同时拥有前者限制获取 window.opener
的功能, 为何还要同时设置两者呢。
考虑到兼容性, 因为一些老旧浏览器不支持 noopener
。
nofollow
搜索引擎对页面的权重计算中包含一项页面引用数 (backlinks), 即如果页面被其他地方链接得多, 那本页面会被搜索引擎判定为优质页面, 在搜索结果中排名会上升。
当设置 rel="nofollow"
则表示告诉搜索引擎, 本次链接不为上述排名作贡献。
一般用于链接内部地址, 或一些不太优质的页面。