关于在Nginx中配置HTTP安全响应头可能会导致的一些问题

关于在Nginx中配置HTTP安全响应头可能会导致的一些问题

最近在实际开发过程中需要对项目的http响应头做一些配置,以防止各类XSS攻击、点击劫持等。在实际配置过程中,发现部分配置加上之后会导致页面部分资源比如图片image,表单样式css等无法正常加载,现记录如下。

1.Content-Security-Policy(CSP)

CSP 是一个计算机的安全标志,主要用来防止 XSS、点击劫持、SQL 注入等攻击;CSP 通过定义运行加载脚本的位置和内容防止恶意代码的加载。这个配置往往用于定义页面可以加载哪些资源,减少和上报 XSS 的攻击,防止数据包嗅探攻击。
实际配置过程中发现如果简单的将属性配置为default-src 'self‘',可能会导致部分css表单样式无法加载,使得页面布局乱掉。

推荐配置方法:

add_header Content-Security-Policy "default-src 'self' example.com(按实际需求修改) 'unsafe-inline' 'unsafe-eval' blob: data: ;";
5.X-Content-Type-Options

X-Content-Type-Options HTTP 消息头相当于一个提示标志,被服务器用来提示客户端一定要遵循在 Content-Type 首部中对 MIME 类型 的设定,而不能对其进行修改。这就禁用了客户端的 MIME 类型嗅探行为。

作用:禁用浏览器的 Content-Type 猜测行为。

使用方法:

# add_header X-Content-Type-Options  "nosniff";

这个配置在使用过程中碰到的问题是最多的,该配置可能会带来以下问题:
1.将X-Content-Type-Options设置为nosniff时,您还必须在NGINX中设置允许的MIME资源类型,需要在nginx.conf配置文件(或者在http配置模块,server配置模块)中加上如下两行配置

include /etc/nginx/mime.types;
default_type application/octet-stream;

2.后台返回的资源类型必须与页面中定义的资源类型严格保持一致,否则也会导致资源无法加载。
比如我在配置时发现,后台返回一张图片image格式为.jpeg格式,而页面中引用时如果图片标签为<img src="image.png" />,那么这个配置会检测到响应的MIME类型与请求的类型不符。

3.一个特殊的例子
X-Content-Type-Options配置为nosniff的情况下,css样式中引用了.gif格式的图片也会无法正常加载,改为.png格式后就可以正常加载出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值