Redis学习手册(Sorted-Sets数据类型)

Linux57

一、概述:

Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的。
在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数。由于Sorted-Sets中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模是非常困难的。

二、相关命令列表:

key score member [score] [member]

时间复杂度中的N表示Sorted-Sets中成员的数量。添加参数中指定的所有成员及其分数到指定key的Sorted-Set中,在该命令中我们可以指定多组score/member作为参数。如果在添加时参数中的某一成员已经存在,该命令将更新此成员的分数为新值,同时再将该成员基于新值重新排序。如果键不存在,该命令将为该键创建一个新的Sorted-Sets Value,并将score/member对插入其中。如果该键已经存在,但是与其关联的Value不是Sorted-Sets类型,相关的错误信息将被返回。 本次操作实际插入的成员数量。

key

获取与该Key相关联的Sorted-Sets中包含的成员数量。 返回Sorted-Sets中的成员数量,如果该Key不存在,返回0。

key min max

分数指定范围内成员的数量。

key increment member

时间复杂度中的N表示Sorted-Sets中成员的数量。该命令将为指定Key中的指定成员增加指定的分数。如果成员不存在,该命令将添加该成员并假设其初始分数为0,此后再将其分数加上increment。如果Key不存,该命令将创建该Key及其关联的Sorted-Sets,并包含参数指定的成员,其分数为increment参数。如果与该Key关联的不是Sorted-Sets类型,相关的错误信息将被返回。 以字符串形式表示的新分数。

key start stop [WITHSCORES]

时间复杂度中的N表示Sorted-Set中成员的数量,M则表示返回的成员数量。该命令返回顺序在参数start和stop指定范围内的成员,这里start和stop参数都是0-based,即0表示第一个成员,-1表示最后一个成员。如果start大于该Sorted-Set中的最大索引值,或start > stop,此时一个空集合将被返回。如果stop大于最大索引值,该命令将返回从start到集合的最后一个成员。

返回索引在start和stop之间的成员列表。

key min max [WITHSCORES] [LIMIT offset count]

时间复杂度中的N表示Sorted-Set中成员的数量,M则表示返回的成员数量。该命令将返回分数在min和max之间的所有成员,即满足表达式min

Original: https://www.cnblogs.com/goody9807/p/7429748.html
Author: PointNet
Title: Redis学习手册(Sorted-Sets数据类型)



相关阅读1

Title: 在linux中使用tcpdump抓包的方法:

在linux中使用tcpdump抓包的方法:

1,运行下面命令来从所有网卡中捕获数据包:

tcpdump -i any

2,从指定网卡中捕获数据包

tcpdump -i eth0

3,指定网卡,IP地址,写入文件

tcpdump -i eth0 host 10.19.150.242 -w ./datdump.cap

4,指定网卡,源ip 且 目的ip,写入文件

tcpdump -i eth0 src host 10.10.100.19 and dst host 10.10.100.153 -w ./datdump1.cap

5,指定网卡,源ip 或 目的ip,写入文件

tcpdump -i eth0 src host 10.10.100.19 or dst host 10.10.100.153 -w ./datdump1.cap

6,指定网卡,tcp端口 且 源ip 且 目的ip,写入文件

tcpdump -i eth0 tcp port 52312 and src host 10.10.100.19 and dst host 10.10.100.153 -w ./datdump3.cap

7,指定网卡,tcp端口 且 源ip 且 目的ip,写入文件

tcpdump -i eth0 host ! 10.10.100.19 and ! 10.10.100.153 -w ./datdump4.cap

8,只抓取sync的数据包 具体什么意思,详见

tcpdump -i eth0 tcp[13] == 2 -w ./datdump5.cap

9,只抓取HTTP包

tcpdump -i eth0 'tcp[(tcp[12]>>2):4] = 0x48545450' -w ./datdump5.cap

10,只抓取ip数据帧中没有数据的包,详见

tcpdump -i eth0 '((ip[2:2] - ((ip[0]&0xf)<

tcpdump [ 选项 ] [ -c 数量 ] [ -i 网络接口 ] [ -w 文件名 ] [ 表达式 ]

man tcpdump

tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]

&#x200B;    [ -c count ]

&#x200B;    [ -C file_size ] [ -G rotate_seconds ] [ -F file ]

&#x200B;    [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]

&#x200B;    [ --number ] [ -Q in|out|inout ]

&#x200B;    [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]

&#x200B;    [ -W filecount ]

&#x200B;    [ -E spi@ipaddr algo:secret,... ]

&#x200B;    [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]

&#x200B;    [ --time-stamp-precision=tstamp_precision ]

&#x200B;    [ --immediate-mode ] [ --version ]

&#x200B;    [ expression ]

&#x9009;&#x9879;&#x7FFB;&#x8BD1;&#x5982;&#x4E0B;&#xFF1A;

-l&#xFF1A;&#x4F7F;&#x6807;&#x51C6;&#x8F93;&#x51FA;&#x53D8;&#x4E3A;&#x7F13;&#x51B2;&#x884C;&#x5F62;&#x5F0F;&#xFF1B;

-c&#xFF1A;&#x6293;&#x5305;&#x6B21;&#x6570;&#xFF1B;

-nn&#xFF1A;&#x76F4;&#x63A5;&#x4EE5; IP &#x53CA; Port Number &#x663E;&#x793A;&#xFF0C;&#x800C;&#x975E;&#x4E3B;&#x673A;&#x540D;&#x4E0E;&#x670D;&#x52A1;&#x540D;&#x79F0;&#xFF1B;

-s &#xFF1A;<数据包大小> &#x8BBE;&#x7F6E;&#x6BCF;&#x4E2A;&#x6570;&#x636E;&#x5305;&#x7684;&#x5927;&#x5C0F;&#xFF1B;

-i&#xFF1A;&#x6307;&#x5B9A;&#x76D1;&#x542C;&#x7684;&#x7F51;&#x7EDC;&#x63A5;&#x53E3;&#xFF1B;

-r&#xFF1A;&#x4ECE;&#x6307;&#x5B9A;&#x7684;&#x6587;&#x4EF6;&#x4E2D;&#x8BFB;&#x53D6;&#x5305;&#xFF1B;

-w&#xFF1A;&#x8F93;&#x51FA;&#x4FE1;&#x606F;&#x4FDD;&#x5B58;&#x5230;&#x6307;&#x5B9A;&#x6587;&#x4EF6;&#xFF1B;

-a&#xFF1A;&#x5C06;&#x7F51;&#x7EDC;&#x5730;&#x5740;&#x548C;&#x5E7F;&#x64AD;&#x5730;&#x5740;&#x8F6C;&#x53D8;&#x6210;&#x540D;&#x5B57;&#xFF1B;

-d&#xFF1A;&#x5C06;&#x5339;&#x914D;&#x4FE1;&#x606F;&#x5305;&#x7684;&#x4EE3;&#x7801;&#x4EE5;&#x4EBA;&#x4EEC;&#x80FD;&#x591F;&#x7406;&#x89E3;&#x7684;&#x6C47;&#x7F16;&#x683C;&#x5F0F;&#x7ED9;&#x51FA;&#xFF1B;

-e&#xFF1A;&#x5728;&#x8F93;&#x51FA;&#x884C;&#x6253;&#x5370;&#x51FA;&#x6570;&#x636E;&#x94FE;&#x8DEF;&#x5C42;&#x7684;&#x5934;&#x90E8;&#x4FE1;&#x606F;&#xFF1B;

-f&#xFF1A;&#x5C06;&#x5916;&#x90E8;&#x7684;Internet&#x5730;&#x5740;&#x4EE5;&#x6570;&#x5B57;&#x7684;&#x5F62;&#x5F0F;&#x6253;&#x5370;&#x51FA;&#x6765;&#xFF1B;

-t&#xFF1A;&#x5728;&#x8F93;&#x51FA;&#x7684;&#x6BCF;&#x4E00;&#x884C;&#x4E0D;&#x6253;&#x5370;&#x65F6;&#x95F4;&#x6233;&#xFF1B;

-v &#xFF1A;&#x8F93;&#x51FA;&#x7A0D;&#x5FAE;&#x8BE6;&#x7EC6;&#x7684;&#x62A5;&#x6587;&#x4FE1;&#x606F;&#xFF1B;--vv&#x5219;&#x8F93;&#x51FA;&#x66F4;&#x8BE6;&#x7EC6;&#x4FE1;&#x606F;&#x3002;
</数据包大小>

抓取带有特殊标记的数据包

https://www.jb51.net/LINUXjishu/118388.html?pc

示例:抓取只包含SYN位的数据包

1.客户端发送SYN

2.服务端回应SYN和ACK

3.客户端发送ACK

现在我们仅捕获包含SYN位的数据包。 注意,不希望步骤2(SYN-ACK)的数据包,只是一个普通的初始SYN。

tcp头的结构

Redis学习手册(Sorted-Sets数据类型)

TCP头包含20个字节固定长度的数据(上图中的前4行),而控制位位于第13个字节(字节计算从0开始)

Redis学习手册(Sorted-Sets数据类型)

只看我们感兴趣的控制位:

Redis学习手册(Sorted-Sets数据类型)

这些是我们感兴趣的TCP控制位。我们对这个八位组中的位进行了编号,从0到7,从右到左,所以PSH位是位编号3,而URG位是编号5,SYN位是2。

Redis学习手册(Sorted-Sets数据类型)

如果只包含 SYN 位,那就是 tcp头的第13个字节(0开始)的值为2,即tcp[13] == 2。

tcpdump -i eth0 tcp[13] == 2 -w ./datdump5.cap

如果抓取包含SYN位的数据包

tcpdump -i eth0 'tcp[13] & 2 == 2' -w ./datdump5.cap

示例:只抓取ip数据包没有数据的包

tcpdump -i eth0 '((ip[2:2] - ((ip[0]&0xf)<

ip[2:2]

表示整个ip数据包总长度,即ip头的第2个字节(0开始)开始的两个字节(2,3)的值。

(ip[0]&0xf)<

Original: https://www.cnblogs.com/xutopia/p/15738423.html
Author: xutopia
Title: 在linux中使用tcpdump抓包的方法:

相关阅读2

Title: Redis分布式锁的N种姿势

Redis几种架构

Redis发展到现在,几种常见的部署架构有:

  • 单机模式;
  • 主从模式;
  • 哨兵模式;
  • 集群模式;

我们首先基于这些架构讲解Redisson普通分布式锁实现,需要注意的是,只有充分了解普通分布式锁是如何实现的,才能更好的了解Redlock分布式锁的实现,因为Redlock分布式锁的实现完全基于普通分布式锁。

普通分布式锁

Redis普通分布式锁原理这个大家基本上都了解,本文不打算再过多的介绍,上一篇文章《Redis分布式锁最牛逼的实现》也讲的很细,并且也说到了几个重要的注意点。如果你对Redis普通的分布式锁还有一些疑问,可以再回顾一下这篇文章。

接下来直接show you the code,毕竟 talk is cheap。

  • redisson版本

本次测试选择redisson 2.14.1版本。

单机模式

源码如下:

通过代码可知,经过Redisson的封装,实现Redis分布式锁非常方便,我们再看一下Redis中的value是啥,和前文分析一样,hash结构,key就是资源名称,field就是UUID+threadId,value就是重入值,在分布式锁时,这个值为1(Redisson还可以实现重入锁,那么这个值就取决于重入次数了):

172.29.1.180:5379> hgetall DISLOCK
1) "01a6d806-d282-4715-9bec-f51b9aa98110:1"
2) "1"

哨兵模式

即sentinel模式,实现代码和单机模式几乎一样,唯一的不同就是Config的构造:

集群模式

集群模式构造Config如下:

普通分布式实现非常简单,无论是那种架构,向Redis通过EVAL命令执行LUA脚本即可。

Redlock分布式锁

那么Redlock分布式锁如何实现呢?以单机模式Redis架构为例,直接看实现代码:

最核心的变化就是RedissonRedLock redLock = new RedissonRedLock(lock1, lock2, lock3);,因为我这里是以三个节点为例。

那么如果是哨兵模式呢?需要搭建3个,或者5个sentinel模式集群(具体多少个,取决于你)。

那么如果是集群模式呢?需要搭建3个,或者5个cluster模式集群(具体多少个,取决于你)。

实现原理

既然核心变化是使用了RedissonRedLock,那么我们看一下它的源码有什么不同。这个类是RedissonMultiLock的子类,所以调用tryLock方法时,事实上调用了RedissonMultiLock的tryLock方法,精简源码如下:

很明显,这段源码就是上一篇文章《Redlock:Redis分布式锁最牛逼的实现》提到的Redlock算法的完全实现。

以sentinel模式架构为例,如下图所示,有sentinel-1,sentinel-2,sentinel-3总计3个sentinel模式集群,如果要获取分布式锁,那么需要向这3个sentinel集群通过EVAL命令执行LUA脚本,需要3/2+1=2,即至少2个sentinel集群响应成功,才算成功的以Redlock算法获取到分布式锁:

Redlock分布式锁

问题合集

根据上面实现原理的分析,这位同学应该是对Redlock算法实现有一点点误解,假设我们用5个节点实现Redlock算法的分布式锁。那么要么是5个redis单实例,要么是5个sentinel集群,要么是5个cluster集群。而不是一个有5个主节点的cluster集群,然后向每个节点通过EVAL命令执行LUA脚本尝试获取分布式锁,如上图所示。

  • 失效时间如何设置

这个问题的场景是,假设设置失效时间10秒,如果由于某些原因导致10秒还没执行完任务,这时候锁自动失效,导致其他线程也会拿到分布式锁。

这确实是Redis分布式最大的问题,不管是普通分布式锁,还是Redlock算法分布式锁,都没有解决这个问题。也有一些文章提出了对失效时间续租,即延长失效时间,很明显这又提升了分布式锁的复杂度。另外就笔者了解,没有现成的框架有实现,如果有哪位知道,可以告诉我,万分感谢。

  • redis分布式锁的高可用

关于Redis分布式锁的安全性问题,在分布式系统专家Martin Kleppmann和Redis的作者antirez之间已经发生过一场争论。有兴趣的同学,搜索"基于Redis的分布式锁到底安全吗"就能得到你想要的答案,需要注意的是,有上下两篇(这应该就是传说中的神仙打架吧,哈)。

  • zookeeper or redis

没有绝对的好坏,只有更适合自己的业务。就性能而言,redis很明显优于zookeeper;就分布式锁实现的健壮性而言,zookeeper很明显优于redis。如何选择,取决于你的业务!

更多免费技术资料可关注:annalin1203

Original: https://www.cnblogs.com/zhuxiaopijingjing/p/12978453.html
Author: 幽暗森林之猪大屁
Title: Redis分布式锁的N种姿势

相关阅读3

Title: nginx-http响应头安全策略

从nginx的http头文件的方面,利用参数设置开启浏览器的安全策略,来实现相关的安全机制。

add_header Content-Security-Policy "default-src 'self' xxx.xxx.com(&#x5141;&#x8BB8;&#x7684;&#x5730;&#x5740;)
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header 'Referrer-Policy' 'origin';
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;

策略 参数 预防攻击 Content-Security-Policy script-src:外部脚本

style-src:样式表

img-src:图像

media-src:媒体文件(音频和视频)

font-src:字体文件

object-src:插件(比如 Flash)

child-src:框架

frame-ancestors:嵌入的外部资源 (比如、

connect-src:HTTP 连接(通过 XHR、WebSockets、EventSource等)

worker-src:worker脚本

manifest-src:manifest 文件 内容网页安全策略 缓解XSS攻击 X-Content-Type-Options nosniff

浏览器严格匹配资源类型,会拒绝加载错误或者不匹配的资源类 约定资源的响应头,屏蔽内容嗅探攻击 X-XSS-Protection 0 关闭防护

1 开启防护

1; mode=block 开启防护 如果被攻击,阻止脚本执行 XSS攻击 X-Frame-Options deny 标识该页面不允许在frame中展示,即便在相同域名的页面中嵌套也不行

sameorigin 可以在同域名的页面中frame中展示

allow-form url 指定的fream中展示。 点击劫持攻击 Strict-Transport-Security max-age=63072000; includeSubdomains; preload 强制https Referrer-Policy no-referrer-when-downgrade:在同等安全等级下(例如https页面请求https地址),发送referer,但当请求方低于发送方(例如https页面请求http地址),不发送referer

origin:仅仅发送origin,即protocal+host

origin-when-cross-origin:跨域时发送origin

same-origin:当双方origin相同时发送

strict-origin:当双方origin相同且安全等级相同时发送

unfafe-url:任何情况下都显示完整的referer 过滤 Referrer 报头内容 X-Download-Options noopen

用于指定IE 8以上版本的用户不打开文件而直接保存文件。

在下载对话框中不显示"打开"选项 控制浏览器下载文件是否支持直接打开 X-Permitted-Cross-Domain-Policies master-only 只允许使用主策略文件 针对flash的安全策略

Content-Security-Policy 内容网页安全策略,缓解XSS攻击

网络请求中,每个资源都有自己的类型,比如Content-Type:text/html 、image/png、 text/css。
但是有一些资源的类型是未定义或者定义错了,导致浏览器会猜测资源类型,尝试解析内容,从而给了脚本攻击可乘之机。
比如利用一个图片资源去执行一个恶意脚本。

配置:浏览器严格匹配资源类型,会拒绝加载错误或者不匹配的资源类型

X-Content-Type-Options: nosniff

X-Content-Type-Options 约定资源的响应头,屏蔽内容嗅探攻击

X-XSS-Protection 防止XSS攻击

&#x5F00;&#x542F;&#x6D4F;&#x89C8;&#x5668;XSS&#x9632;&#x62A4;,&#x8FC7;&#x6EE4;xss&#x653B;&#x51FB;&#x811A;&#x672C;)

配置:浏览器XSS防护

X-XSS-Protection: 0 &#x5173;&#x95ED;&#x9632;&#x62A4;
X-XSS-Protection: 1 &#x5F00;&#x542F;&#x9632;&#x62A4;
X-XSS-Protection: 1; mode=block &#x5F00;&#x542F;&#x9632;&#x62A4; &#x5982;&#x679C;&#x88AB;&#x653B;&#x51FB;&#xFF0C;&#x963B;&#x6B62;&#x811A;&#x672C;&#x6267;&#x884C;

nginx&#x914D;&#x7F6E;&#xFF1A; add_header X-XSS-Protection "1; mode=block";

X-Frame-Options 防止点击劫持攻击

&#x901A;&#x8FC7;&#x8FD9;&#x4E2A;&#x63A7;&#x5236;&#x6765;&#x907F;&#x514D;&#x81EA;&#x5DF1;&#x7684;&#x8D44;&#x6E90;&#x9875;&#x9762;&#x88AB;&#x5176;&#x4ED6;&#x9875;&#x9762;&#x5F15;&#x7528;&#x3002;

&#x70B9;&#x51FB;&#x52AB;&#x6301;&#xFF1A;&#x653B;&#x51FB;&#x8005;&#x4F1A;&#x7528;&#x4E00;&#x4E2A;&#x81EA;&#x5DF1;&#x7F51;&#x7AD9;&#xFF0C;&#x7528;ifream&#x6216;&#x8005;fream&#x5D4C;&#x5957;&#x7684;&#x65B9;&#x5F0F;&#x5F15;&#x5165;&#x76EE;&#x6807;&#x7F51;&#x7AD9;&#xFF0C;&#x8BF1;&#x4F7F;&#x7528;&#x6237;&#x70B9;&#x51FB;&#x3002;&#x4ECE;&#x800C;&#x52AB;&#x6301;&#x7528;&#x6237;&#x70B9;&#x51FB;&#x4E8B;&#x4EF6;&#x3002;
deny &#x6807;&#x8BC6;&#x8BE5;&#x9875;&#x9762;&#x4E0D;&#x5141;&#x8BB8;&#x5728;frame&#x4E2D;&#x5C55;&#x793A;&#xFF0C;&#x5373;&#x4FBF;&#x5728;&#x76F8;&#x540C;&#x57DF;&#x540D;&#x7684;&#x9875;&#x9762;&#x4E2D;&#x5D4C;&#x5957;&#x4E5F;&#x4E0D;&#x884C;&#x3002;

sameorigin &#x53EF;&#x4EE5;&#x5728;&#x540C;&#x57DF;&#x540D;&#x7684;&#x9875;&#x9762;&#x4E2D;frame&#x4E2D;&#x5C55;&#x793A;

allow-form url &#x6307;&#x5B9A;&#x7684;fream&#x4E2D;&#x5C55;&#x793A;&#x3002;

nginx&#x914D;&#x7F6E;:add_header X-Frame-Options SAMEORIGIN;

Strict-Transport-Security 强制https

&#x6D4F;&#x89C8;&#x5668;&#x53EA;&#x80FD;&#x901A;&#x8FC7;https&#x8BBF;&#x95EE;&#x5F53;&#x524D;&#x8D44;&#x6E90;

配置 强制https

nginx&#x914D;&#x7F6E;&#xFF1A;add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

&#x5728;&#x63A5;&#x4E0B;&#x6765;&#x7684;&#x4E00;&#x5E74;&#xFF08;&#x5373;xxx&#x79D2;&#xFF09;&#x4E2D;&#xFF0C;&#x6D4F;&#x89C8;&#x5668;&#x53EA;&#x8981;&#x5411;xxx&#x6216;&#x5176;&#x5B50;&#x57DF;&#x540D;&#x53D1;&#x9001;HTTP&#x8BF7;&#x6C42;&#x65F6;&#xFF0C;&#x5FC5;&#x987B;&#x91C7;&#x7528;HTTPS&#x6765;&#x53D1;&#x8D77;&#x8FDE;&#x63A5;&#x3002;

Referrer-Policy 过滤Referrer报头内容

&#x89C4;&#x5B9A;&#x4EC0;&#x4E48;&#x60C5;&#x51B5;&#x4E0B;&#x663E;&#x793A;referer&#x5B57;&#x6BB5;&#xFF0C;&#x4EE5;&#x53CA;referer&#x5B57;&#x6BB5;&#x663E;&#x793A;&#x7684;&#x5185;&#x5BB9;&#x591A;&#x5C11;.

&#x5F53;&#x7528;&#x6237;&#x5728;&#x6D4F;&#x89C8;&#x5668;&#x4E0A;&#x70B9;&#x51FB;&#x4E00;&#x4E2A;&#x94FE;&#x63A5;&#x65F6;&#xFF0C;&#x4F1A;&#x4EA7;&#x751F;&#x4E00;&#x4E2A; HTTP &#x8BF7;&#x6C42;&#xFF0C;&#x7528;&#x4E8E;&#x83B7;&#x53D6;&#x65B0;&#x7684;&#x9875;&#x9762;&#x5185;&#x5BB9;&#xFF0C;&#x800C;&#x5728;&#x8BE5;&#x8BF7;&#x6C42;&#x7684;&#x62A5;&#x5934;&#x4E2D;&#xFF0C;&#x4F1A;&#x5305;&#x542B;&#x4E00;&#x4E2A; Referrer&#xFF0C;&#x7528;&#x4EE5;&#x6307;&#x5B9A;&#x8BE5;&#x8BF7;&#x6C42;&#x662F;&#x4ECE;&#x54EA;&#x4E2A;&#x9875;&#x9762;&#x8DF3;&#x8F6C;&#x9875;&#x6765;&#x7684;&#xFF0C;&#x5E38;&#x88AB;&#x7528;&#x4E8E;&#x5206;&#x6790;&#x7528;&#x6237;&#x6765;&#x6E90;&#x7B49;&#x4FE1;&#x606F;&#x3002;
&#x4F46;&#x662F;&#x4E5F;&#x6210;&#x4E3A;&#x4E86;&#x4E00;&#x4E2A;&#x4E0D;&#x5B89;&#x5168;&#x7684;&#x56E0;&#x7D20;&#xFF0C;&#x6240;&#x4EE5;&#x5C31;&#x6709;&#x4E86; Referrer-Policy&#xFF0C;&#x7528;&#x4E8E;&#x8FC7;&#x6EE4; Referrer &#x62A5;&#x5934;&#x5185;&#x5BB9;

配置:过滤Referrer报头内容

no-referrer-when-downgrade&#xFF1A;&#x5728;&#x540C;&#x7B49;&#x5B89;&#x5168;&#x7B49;&#x7EA7;&#x4E0B;&#xFF08;&#x4F8B;&#x5982;https&#x9875;&#x9762;&#x8BF7;&#x6C42;https&#x5730;&#x5740;&#xFF09;&#xFF0C;&#x53D1;&#x9001;referer&#xFF0C;&#x4F46;&#x5F53;&#x8BF7;&#x6C42;&#x65B9;&#x4F4E;&#x4E8E;&#x53D1;&#x9001;&#x65B9;&#xFF08;&#x4F8B;&#x5982;https&#x9875;&#x9762;&#x8BF7;&#x6C42;http&#x5730;&#x5740;&#xFF09;&#xFF0C;&#x4E0D;&#x53D1;&#x9001;referer
origin&#xFF1A;                    &#x4EC5;&#x4EC5;&#x53D1;&#x9001;origin&#xFF0C;&#x5373;protocal+host
origin-when-cross-origin&#xFF1A;  &#x8DE8;&#x57DF;&#x65F6;&#x53D1;&#x9001;origin
same-origin&#xFF1A;               &#x5F53;&#x53CC;&#x65B9;origin&#x76F8;&#x540C;&#x65F6;&#x53D1;&#x9001;
strict-origin&#xFF1A;             &#x5F53;&#x53CC;&#x65B9;origin&#x76F8;&#x540C;&#x4E14;&#x5B89;&#x5168;&#x7B49;&#x7EA7;&#x76F8;&#x540C;&#x65F6;&#x53D1;&#x9001;
unfafe-url&#xFF1A;                &#x4EFB;&#x4F55;&#x60C5;&#x51B5;&#x4E0B;&#x90FD;&#x663E;&#x793A;&#x5B8C;&#x6574;&#x7684;referer

nginx&#x914D;&#x7F6E;&#xFF1A;add_header 'Referrer-Policy' 'origin';

&#x6CE8;&#x610F;&#xFF1A;&#x6B64;&#x914D;&#x7F6E;&#x53EF;&#x80FD;&#x4F1A;&#x5BFC;&#x81F4;&#x67D0;&#x4E9B;&#x7CFB;&#x7EDF;&#x8BBF;&#x95EE;&#x7387;&#x7EDF;&#x8BA1;&#x63D2;&#x4EF6;&#x5931;&#x6548;

X-Download-Options 控制浏览器下载文件是否支持直接打开

&#x63A7;&#x5236;&#x6D4F;&#x89C8;&#x5668;&#x4E0B;&#x8F7D;&#x6587;&#x4EF6;&#x662F;&#x5426;&#x652F;&#x6301;&#x76F4;&#x63A5;&#x6253;&#x5F00;&#xFF0C;&#x5982;&#x679C;&#x652F;&#x6301;&#x76F4;&#x63A5;&#x6253;&#x5F00;&#xFF0C;&#x53EF;&#x80FD;&#x4F1A;&#x6709;&#x5B89;&#x5168;&#x9690;&#x60A3;

配置参数:

X-Download-Options: noopen  &#x7528;&#x4E8E;&#x6307;&#x5B9A;IE 8&#x4EE5;&#x4E0A;&#x7248;&#x672C;&#x7684;&#x7528;&#x6237;&#x4E0D;&#x6253;&#x5F00;&#x6587;&#x4EF6;&#x800C;&#x76F4;&#x63A5;&#x4FDD;&#x5B58;&#x6587;&#x4EF6;&#x3002;&#x5728;&#x4E0B;&#x8F7D;&#x5BF9;&#x8BDD;&#x6846;&#x4E2D;&#x4E0D;&#x663E;&#x793A;&#x201C;&#x6253;&#x5F00;&#x201D;&#x9009;&#x9879;&#x3002;

nginx&#x914D;&#x7F6E;&#xFF1A;add_header X-Download-Options noopen;

X-Permitted-Cross-Domain-Policies 针对flash的安全策略

&#x9488;&#x5BF9;flash&#x7684;&#x5B89;&#x5168;&#x7B56;&#x7565;&#xFF0C;&#x7528;&#x4E8E;&#x6307;&#x5B9A;&#x5F53;&#x4E0D;&#x80FD;&#x5C06;"crossdomain.xml"&#x6587;&#x4EF6;&#xFF08;&#x5F53;&#x9700;&#x8981;&#x4ECE;&#x522B;&#x7684;&#x57DF;&#x540D;&#x4E2D;&#x7684;&#x67D0;&#x4E2A;&#x6587;&#x4EF6;&#x4E2D;&#x8BFB;&#x53D6; Flash &#x5185;&#x5BB9;&#x65F6;&#x7528;&#x4E8E;&#x8FDB;&#x884C;&#x5FC5;&#x8981;&#x8BBE;&#x7F6E;&#x7684;&#x7B56;&#x7565;&#x6587;&#x4EF6;&#xFF09;&#x653E;&#x7F6E;&#x5728;&#x7F51;&#x7AD9;&#x6839;&#x76EE;&#x5F55;&#x7B49;&#x573A;&#x5408;&#x65F6;&#x91C7;&#x53D6;&#x7684;&#x66FF;&#x4EE3;&#x7B56;&#x7565;&#x3002;
X-Permitted-Cross-Domain-Policies: master-only

master-only &#x53EA;&#x5141;&#x8BB8;&#x4F7F;&#x7528;&#x4E3B;&#x7B56;&#x7565;&#x6587;&#x4EF6;&#xFF08;/crossdomain.xml&#xFF09;

nginx&#x914D;&#x7F6E;: add_header X-Permitted-Cross-Domain-Policies none;

Original: https://www.cnblogs.com/linuxshare/p/16495186.html
Author: 爱折腾的大臭臭
Title: nginx-http响应头安全策略