noopener, noreferrer 及 nofollow 的用法
<a> 标签通常会配合着使用 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" 则表示告诉搜索引擎, 本次链接不为上述排名作贡献。
一般用于链接内部地址, 或一些不太优质的页面。
noopener, noreferrer 及 nofollow 的用法的更多相关文章
- a标签属性 rel=noopener noreferrer
当你浏览一个页面点击一个a标签链接跳转到另一个页面时, <a href="http://www.baidu.com" target="_blank"> ...
- 实战重现隐藏在A标签_blank下的危险漏洞,简略说明noopener的作用
前几日,在看阮一峰老师的博客文章中,发现了这么一篇 .标题为 <target = "_blank" 的危险性(英文)>.这篇文章同事看过之后因为不理解其中的危险之处,念 ...
- a 样式重置 常见用法
样式重置 a:link, a:visited, a:hover, a:active{ color: #fff; text-decoration: none; } 常见用法 ( rel=& ...
- React+Ant Design设置左侧菜单导航路由的显示与隐藏(与权限无关)
最近在学习react时,用到了很流行的UI框架Ant Design,也了解了一下Ant Design Pro,发现它们都有导航组件,Ant Design框架的导航菜单在这里,Ant Design Pr ...
- 关于html的a标签的target="__blank "的安全漏洞问题
使用场景:最近项目中使用一个a标签的 target="__blank "链接跳转 页面,打开一个新的 pdf文件(或者外部的一个网页),然后在chrome浏览器中快速的滑动的时候, ...
- 设置a 标签打开新窗口新姿势
设置页面中的所有a标签都打开新窗口 1,在写的时候就加上target="_blank" 2,在页头<head></head>里加上 <base tar ...
- 在mybatis中写sql语句的一些体会
本文会使用一个案例,就mybatis的一些基础语法进行讲解.案例中使用到的数据库表和对象如下: article表:这个表存放的是文章的基础信息 -- ------------------------- ...
- Day learn,day up
前言 忽略我这个中文式英语的标题. 身为一个记性不咋地的前端渣渣,觉得平时看的一些文章太散了,特开此文作为一种记录,可谓好记性不如烂笔头,也算是逼自己要经常学习.文章的日期为最后更新时间,题目顺序不分 ...
- 【HTML】标签
HTML标签 2020-09-08 15:37:37 by冲冲 1. 标签 <!DOCTYPE html> <html> <head> <meta cha ...
- VuePress 博客之 SEO 优化(三)标题、链接优化
前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 本篇讲讲 ...
随机推荐
- LeetCode系列之 (JavaScript) => 88. 合并两个有序数组
题目描述: [Leetcode 题目链接]:88. 合并两个有序数组 - 力扣(LeetCode) (leetcode-cn.com) 解题思路分析: 在nums1中找到nums2 插入的位置,然后在 ...
- 5.26 学习SSH
1.ssh客户端是一种使用Secure Shell协议 连接到运行了ssh服务端的远程服务器上 ssh是比较可靠的,专为远程登录会话和其他网络服务提供安全性的协议 2.
- nuttx理解
操作系统:为啥要引入操作系统,个人的理解是为了实时性(即及时的响应性). 没有操作系统下多个任务都只能以前后台的方式排队执行,对某个任务的输入不能得到及时的响应:虽然后台有中断,但不能把所有的任务都放 ...
- Android Native Code 手动调试
调试启动过程中的 Android Native Code Crash 记录一下,最后成功使用的工具是 lldb + lldb-server,不需要 root 权限.我最先尝试使用的是,gdb + gd ...
- 12、jmeter逻辑控制器-临界区控制器
临界区:说白了就是不并发了 一个个的像独木桥 使用场景:比如提交一个数据 需要一个一个的提交 一个个的改 在数据库改操作的时候 需要用到 临界区控制器 案例:临界区控制器
- Delphi之不可思议
1.--------不可思议的函数调用--开始- 开发环境D7 1 function TForm1.GetssA: string; 2 begin 3 Result:=Result+'AA'; 4 e ...
- jieba初
url: https://github.com/fxsjy/jieba/blob/master/ jieba "结巴"中文分词:做最好的 Python 中文分词组件 "J ...
- SAP B1如何找回被误删的许可证号
SAP B1的许可证分配记录,保存在安装目录下的B1Upf.xml文件下,如果你发现许可证用户不小心误删了, 但又不知道是哪个用户名了,打开此文件,便可发现该用户名.接下来,你只要再建立一个和误删除的 ...
- 《Unix/Linux系统编程》第八周学习笔记
<Unix/Linux系统编程>第八周学习笔记 时钟服务函数 gettimeodfay() 获取系统时间 settimeofday() 设置系统时间 time() 以秒为单位返回当前时间 ...
- Java学习笔记-封装Java Util包Base64方法
懒人菜鸟入门Java系列-习惯性封装常用方法,方便开发过程中调用 注释: Java版本-1.8 1 * @Author wuwenchao 2 * @Version 1.0.0 3 * @Date ...