nginx-http响应头安全策略

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

add_header Content-Security-Policy "default-src 'self' xxx.xxx.com(允许的地址)
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攻击

开启浏览器XSS防护,过滤xss攻击脚本)

配置:浏览器XSS防护

X-XSS-Protection: 0 关闭防护
X-XSS-Protection: 1 开启防护
X-XSS-Protection: 1; mode=block 开启防护 如果被攻击,阻止脚本执行

nginx配置: add_header X-XSS-Protection "1; mode=block";

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

通过这个控制来避免自己的资源页面被其他页面引用。

点击劫持:攻击者会用一个自己网站,用ifream或者fream嵌套的方式引入目标网站,诱使用户点击。从而劫持用户点击事件。
deny 标识该页面不允许在frame中展示,即便在相同域名的页面中嵌套也不行。

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

allow-form url 指定的fream中展示。

nginx配置:add_header X-Frame-Options SAMEORIGIN;

Strict-Transport-Security 强制https

浏览器只能通过https访问当前资源

配置 强制https

nginx配置:add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

在接下来的一年(即xxx秒)中,浏览器只要向xxx或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。

Referrer-Policy 过滤Referrer报头内容

规定什么情况下显示referer字段,以及referer字段显示的内容多少.

当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息。
但是也成为了一个不安全的因素,所以就有了 Referrer-Policy,用于过滤 Referrer 报头内容

配置:过滤Referrer报头内容

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

nginx配置:add_header 'Referrer-Policy' 'origin';

注意:此配置可能会导致某些系统访问率统计插件失效

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

控制浏览器下载文件是否支持直接打开,如果支持直接打开,可能会有安全隐患

配置参数:

X-Download-Options: noopen  用于指定IE 8以上版本的用户不打开文件而直接保存文件。在下载对话框中不显示“打开”选项。

nginx配置:add_header X-Download-Options noopen;

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

针对flash的安全策略,用于指定当不能将"crossdomain.xml"文件(当需要从别的域名中的某个文件中读取 Flash 内容时用于进行必要设置的策略文件)放置在网站根目录等场合时采取的替代策略。
X-Permitted-Cross-Domain-Policies: master-only

master-only 只允许使用主策略文件(/crossdomain.xml)

nginx配置: add_header X-Permitted-Cross-Domain-Policies none;

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

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573866/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Redis 为什么使用单进程单线程方式也这么快(转载)

    Redis 采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由 C 语言编写。官方提供的数据是可以达到100000+的 qps。这个数据不比采用单进程多线程的同样基于内…

    Linux 2023年5月28日
    087
  • ELK时间戳

    ELK时间戳 在我们使用ELK过程中,总会遇到时间戳的问题。首先 logstash如果没有加以处理的话,那么它默认使用的是采集的时间戳,然后存入 ES。那么这样的话时间显示的是错误…

    Linux 2023年6月8日
    0103
  • Redis16个常见使用场景

    目录 缓存 数据共享分布式 分布式锁 全局ID 计数器 限流 位统计 购物车 用户消息时间线timeline 消息队列 抽奖 点赞、签到、打卡 商品标签 商品筛选 用户关注、推荐模…

    Linux 2023年5月28日
    0113
  • Linux lsof命令的使用示例

    Linux命令中,lsof代表 Li St Open Files,用于查看所有被打开的文件,同时显示打开文件相对应的进程。Linux/Unix把一切都看做文件(pipes,sock…

    Linux 2023年6月13日
    091
  • Linux查看运行着的Java Spring boot api程序命令

    阅文时长 | 0.03分钟字数统计 | 56.8字符主要内容 | 1、引言&背景 2、声明与参考资料『Linux查看运行着的Java Spring boot api程序命令…

    Linux 2023年5月27日
    0123
  • MacOS设置终端代理

    前言 国内的开发者或多或少都会因为网络而烦恼,因为一些特殊原因有时候网络不好的时候需要使用代理才能完成对应的操作。原来我一直都是使用斐讯路由器然后刷了梅林的固件,直接在路由器层面设…

    Linux 2023年6月14日
    096
  • Elasticsearch_exporter 监控指标

    github地址:https://github.com/justwatchcom/elasticsearch_exporter Name Type Cardinality Help…

    Linux 2023年5月27日
    087
  • 定时备份Docker中的MySQL数据库

    新建脚本 mysql_bak.sh mysql 为docker中的mysql容器名 #!/bin/bash docker_name=mysql data_dir="/op…

    Linux 2023年6月14日
    0109
  • MySQL-创建表

    如何在指定数据库中创建表 我们先来了解一下在数据库中创建表的规则: CREATE TABLE 表名 ( 字段名,数据类型, 字段名,数据类型, ….. ) 例如: 添加…

    Linux 2023年6月8日
    0122
  • Linux内核驱动–硬件访问I/O【转】

    寄存器与内存 寄存器和内存之间有什么区别? [En] What is the difference between registers and memory? 寄存器和RAM的主要…

    Linux 2023年5月27日
    075
  • Centos8安装docker报错(错误提示:All mirrors were tried)

    Centos8从零安装Docker-ce 背景:我把服务器整个yum源的配置文件里的内容全删了。因为我一直碰到”All mirrors were tried&#8221…

    Linux 2023年5月27日
    0155
  • 【证券从业】金融基础知识-第二章 中国金融体系与多层次资本市场02

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为两篇文章记录消化 posted @2022-05-31 22:14 陈景中 阅读…

    Linux 2023年6月13日
    092
  • 快速登陆linux服务器

    前言 本文适用于喜欢原生终端的用户,钟爱第三方ssh客户端的可以无视….客户端可以保存用户信息和密码,比较无脑。mac可以使用终端,win可以使用git的bash。 上…

    Linux 2023年6月14日
    0122
  • Redis监控技巧(转)

    来自:http://blog.nosqlfan.com/html/4166.html Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,你只需要执行下面一条…

    Linux 2023年5月28日
    0100
  • Ubuntu18.04 + Windows10 双系统安装

    此处忽略Windows10安装!!! 准备 安装环境 OS:Windows10 CPU:Intel(R) Core(TM) i5-10600KF CPU @ 4.10GHz 4.1…

    Linux 2023年5月27日
    0107
  • 大数据之Hadoop集群的HDFS压力测试

    测试HDFS写性能 原文:sw-code1)写测试的原理 2)测试内容:向HDFS集群写10个128MB的文件(3个机器每个4核,2 * 4 = 8 < 10 < 3 …

    Linux 2023年6月8日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球