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)

大家都在看

  • k8s多集群切换:使用kubeconfig文件管理多套kubernetes(k8s)集群

    一.系统环境 二.前言 三.kubeconfig文件 四.kubernetes(k8s)多集群切换 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Lin…

    Linux 2023年6月7日
    0125
  • 系统初始化

    一般系统安装好后,按照自己习惯定义 csharp;gutter:true;</p> <h1>alias</h1> <p>echo &…

    Linux 2023年6月7日
    049
  • RAID磁盘阵列

    RAID磁盘阵列 *本章重点:了解各RAID级别的原理优缺点及常用级别实现,企业中厂商大多提供了硬RAID方案。 1、什么是RAID? “RAID”一词是由…

    Linux 2023年6月7日
    086
  • python 练习题:接收一个或多个数并计算乘积

    以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积 def product(x, y): return x * y python;gutter:true; …

    Linux 2023年6月8日
    086
  • Jmeter 使用Json提取请求数据-2

    在接口测试中有一个这样的场景:业务接口需要用到登录token;下个接口需要用到前个接口返回值作为参数,该怎么实现? 首先先看下登录、业务接口,本文用的jmeter版本为5.4.1 …

    Linux 2023年6月8日
    089
  • [转帖]shell学习之shell基础知识了解

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年5月28日
    091
  • Linux vi/vim

    1.vi/vim快捷键位图 详细可以参考:https://www.runoob.com/w3cnote/all-vim-cheatsheat.html 2.vi/vim的三种模式 …

    Linux 2023年6月8日
    088
  • 演示webuploader和cropperjs图片裁剪上传

    最近有个项目要在浏览器端裁剪并上传图片。由于缺乏人力,只能我上阵杀敌。通过参考各种文章,最后决定用cropperjs进行图片裁剪,用webuploader上传文件。本文涉及到的知识…

    Linux 2023年6月6日
    092
  • 人人都写过的5个Bug!

    大家好,我是良许。 计算机专业的小伙伴,在学校期间一定学过 C 语言。它是众多高级语言的鼻祖,深入学习这门语言会对计算机原理、操作系统、内存管理等等底层相关的知识会有更深入的了解,…

    Linux 2023年6月14日
    090
  • WPF 通过 GifBitmapDecoder 调用 WIC 解析 Gif 和进行动画播放的简单方法

    本文告诉大家如何在 WPF 里,通过 GifBitmapDecoder 调用 WIC 层来解析 GIF 图片,然后采用动画的方式进行播放 使用 WIC 层解析 GIF 图片可以调用…

    Linux 2023年6月6日
    073
  • 前端Web实训项目-教务系统成绩查询

    通过暑期前半个月实训,我们选的方向是Web前端(虽然我想选Java全栈的),所以我们最终确立的主题是做一个网页。 这个项目是我们组四个人做的,因为技术水品都不咋样,所以有很多地方需…

    Linux 2023年6月7日
    0109
  • 如何使用 Javascript 将图标字体渲染为图片

    前言 在软件开发中肯定要用到图标,比如下图的 Groove 音乐中就用到了许多图标。一种获取这些图标的方法是把 Groove 音乐截个图,然后熟练地开启 Photoshop,开始抠…

    Linux 2023年6月7日
    0101
  • k8s/kubeadm 生产环境高可用集群部署

    kubeadm 生产环境集群部署 基本环境配置 kubeadm 安装方式自 1.14 版本以后,安装方法几乎没有任何变化,此文档可以尝试安装最新的 k8s 集群, centos 采…

    Linux 2023年6月14日
    086
  • Question06-查询”李”姓老师的数量

    问题比较简单,一个单表查询就可以解决,这里就不过多地讲解 Original: https://www.cnblogs.com/OnlyOnYourself-lzw/p/165738…

    Linux 2023年6月7日
    075
  • 解决JSP文件在浏览器访问中文乱码问题

    指定编码类型为支持中文的编码1.添加 第二句是设置输出到浏览器,浏览器选择的编码方式加上这两句已后页面访问将不再是乱码了. Original: https://www.cnblog…

    Linux 2023年6月7日
    085
  • 玩转 Windows Terminal

    今天给大家分享一下Windows Terminal的使用及个性化定制。 一、安装 该项目的开源地址为https://github.com/microsoft/terminal,如果…

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