NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

怎样强化你的 HTTP 安全标头?

  • 2020-06-18
  • 本文字数:2853 字

    阅读完需:约 9 分钟

怎样强化你的HTTP 安全标头?


为保护网站或 web 应用程序需要考虑很多事情,但一个好的起点是考察一些 HTTP 安全标头,并确保你采用了最佳实践。许多情况下,这些实践非常容易操作,只需要稍微改变一下服务器配置即可。HTTP 安全标头能减少攻击和安全漏洞,从而增加一个额外的安全层。在本文中,我们将探索其中的一些安全标头,帮助你更好地理解其用途,了解如何实现它们。

什么是 HTTP 安全标头?

每当浏览器向服务器请求一个页面时,服务器就会用内容和HTTP响应标头来响应。其中一些标头就包含内容元数据,如 Content-Encoding、Cache-Control、状态代码等。



除此之外,还有一些 HTTP 安全标头,它们会告诉浏览器在处理网站内容时应该做什么。例如,使用Strict-Transport-Security(严格安全传输),你就可以强制要求浏览器仅通过 HTTPS 进行通信。我们将在下面探讨 6 个不同的 HTTP 安全标头(无特定顺序),你应该知道它们,并且我们建议你尽可能实现它们。

1.内容安全策略(Content Security Policy)

内容安全策略(Content-Security-Policy)标头提供了一个额外的安全层。该策略定义了被许可的内容源,允许浏览器加载这些内容源,从而防止跨站点脚本(XSS)攻击及其他代码注入攻击。



目前,所有主流浏览器都完全或部分支持内容安全策略标头。而且就算它遇到了老式浏览器也不会中断内容的传递,这种情况下它只是不执行而已。



内容安全策略可以用到许多指令。下面这个例子允许来自当前域(由“self”定义)和 google-analytics.com 的脚本。


Content-Security-Policy: script-src 'self' https://www.google-analytics.com
复制代码


要了解所有指令,并查看其在 Nginx 和 Apache 上的实现,请务必查看我们更深入的关于内容安全策略的帖子

2.X-XSS-Protection

X-XSS-Protection标头旨在启用内置于现代浏览器的跨站点脚本(XSS)过滤器。这种过滤器通常是默认启用的,但使用这个标头会强制执行它。 Internet Explorer 8+、Chrome 和 Safari 都支持此标头。以下是标头的一个示例:


X-XSS-Protection: 1;mode=block
复制代码


在 Nginx 中启用


add_header X-XSS-Protection "1;mode=block" always;
复制代码


在 Apache 中启用


header always set X-XSS-Protection "1;mode=block"
复制代码

3.HTTP 严格安全传输(HSTS)

严格安全传输标头是一种安全增强功能,它会限制浏览器仅通过 HTTPS 访问服务器。所以它确保了他人不能通过不安全且易受攻击的 HTTP 连接发起访问。



除了 Opera Mini 和早期版本的 Internet Explorer 之外,目前所有主要的现代浏览器都支持 HTTP 严格安全传输。



这是一个 HSTS 标头的例子:你可以加入 max age、subdomain 和 preload 参数。


Strict-Transport-Security: max-age=31536000;includeSubDomains;preload
复制代码


欲阅读更多关于此标头的信息,并了解其在 Nginx 和 Apache 上的实现,请查看我们关于严格安全传输更深入的帖子。

4.X-Frame-Options

X-Frame-Options标头不允许在网站上加载框架,从而提供点击劫持保护。目前,IE 8+、Chrome 4.1+、Firefox 3.6.9+、Opera 10.5+、Safari 4+均支持它。以下是该标头的一个示例:


X-Frame-Options: SAMEORIGIN
复制代码


在 Nginx 中启用


add_header X-Frame-Options "SAMEORIGIN" always;
复制代码


在 Apache 中启用


header always set X-Frame-Options "SAMEORIGIN"
复制代码

5.Expect-CT

Expect-CT标头允许网站报告和强制实施证书透明度要求,从而防止错误颁发的证书被使用。启用此标头后,网站将要求浏览器验证证书是否出现在公共CT日志中。以下是该标头的一个示例:


Expect-CT: max-age=604800, enforce, report-uri="https://www.example.com/report"
复制代码


在 Nginx 中启用


add_header Expect-CT "max-age=604800, enforce, report-uri='https://www.example.com/report' always;
复制代码


在 Apache 中启用


header always set Expect-CT "max-age=604800, enforce, report-uri="https://www.example.com/report"
复制代码

6.X-Content-Type-Options

X-Content-Type-Options标头能防止 IE 浏览器和谷歌浏览器从声明的Content-Type中嗅探响应。因此它能降低偷渡式(drive-by)下载攻击的风险,并能帮助正确处理内容。以下是该标头的一个示例:


X-Content-Type-Options: nosniff
复制代码


在 Nginx 中启用


add_header X-Content-Type-Options "nosniff" always;
复制代码


在 Apache 中启用


header always set X-Content-Type-Options "nosniff"
复制代码

7.功能-策略(Feature-Policy)

功能-策略标头赋予你允许或拒绝浏览器某些功能的能力,无论是在它自己的框架中还是在内联框架元素(< iframe >)中的内容中。以下是该标头的一个示例:


Feature-Policy: autoplay 'none';camera 'none'
复制代码


在 Nginx 中启用


add_header Feature-Policy "autoplay 'none';camera 'none'" always;
复制代码


在 Apache 中启用


header always set Feature-Policy "autoplay 'none';camera 'none'"
复制代码

如何检查 HTTP 安全标头?

下面是三种检查 HTTP 安全标头的快捷方法,HTTP 安全标头是 HTTP 响应标头的一部分。

1.KeyCDN 的 HTTP 标头检查工具

KeyCDN 发布了一个在线的HTTP标头检查工具,你可以很容易地使用它来检索当前在网站上运行的 HTTP 安全标头。只需输入你想要检查的网址即可。



然后,它会返回 HTTP 响应标头。


2.Chrome DevTools 响应标头

另一种快捷方法是启动Chrome DevTools来访问 HTTP 安全标头。要运行此操作,请单击网络面板,按Ctrl + R (Cmd + R)刷新页面。点击进入域的请求,你就会看到响应标头的一个片段。

3.使用 Security Headers 来扫描你的网站

检查 HTTP 安全标头的第三种方法是在Security Headers上扫描你的网站。这是一个方便的小工具,它由信息安全顾问斯科特·赫尔姆开发。基于当前的 HTTP 安全标头,它会给网站一个评级,从 F 级一直到 A+级。一定要把收藏这个网址。以下是斯科特自己网站上的一个A+评级的例子。



下面是一个F级评级的例子,它没有任何在 Citi 的公司网站上能够轻松找到的 HTTP 安全标头。



这个工具会输出原始 HTTP 标头,并为你提供每个 HTTP 安全标头的摘要以及缺少的内容。




斯科特还创建了一个Chrome插件Firefox插件,在这两个插件中,你可以扫描你想要分析的网站的 HTTP 安全标头。斯科特在 2016 年 2 月对 Alexa 排名前 100 万的网站进行了分析,并查看了它们的HTTP安全标头的使用情况,结果可能会让你大吃一惊。使用严格安全传输标头的网站数量几乎翻了一番。因此,似乎越来越多的人正在开始实施这些措施,尤其是现在,许多公司正在向HTTPS迁移。所以,我们建议你在进行 HTTPS 迁移期间对当前的安全策略进行全面的评估。



内容安全策略(CSP)尤其可以成为防止跨站点脚本(XSS)攻击的强大机制,跨站点脚本(XSS)攻击占网站所有安全漏洞的84%。然而,正如你在前面看到的,只有不到 5%的网站在积极使用标头。所以这亟需改变。

综述

正如你所见,HTTP 安全标头有助于加强网站的安全性,在大多数情况下,你没有理由不使用它们。如果你不能控制别人对你的服务器的访问,我们建议你联系网络主机供应商,让他们知道这件事。也许你可以给他们发一个来自 securityheaders.io 的链接。F 级的评级从来就不是件好事!


英文原文:


Hardening Your HTTP Security Headers


2020-06-18 15:564011
用户头像

发布了 34 篇内容, 共 18.6 次阅读, 收获喜欢 47 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试 | 修改特定的元素属性

测吧(北京)科技有限公司

数跨新阶,原生新纪 | 2023 数字化转型发展大会蓄力启航

信通院IOMM数字化转型团队

数字化转型 大会 IOMM 数字化转型峰会

7个小技巧让你运行C4D不卡!

Finovy Cloud

学习 #技术干货# 建模 技巧分享 4CD

百度王海峰披露飞桨生态最新成果 开发者数量已达800万

飞桨PaddlePaddle

人工智能 百度飞桨 WAVE SUMMIT

21. 面向对象及特性

茶桁

Python 面向对象

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

袋鼠云数栈

大数据 开源 Taier

零代码搭建一个微信小程序

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

CutLER:一种用于无监督目标检测和实例分割的方法

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 8 月 PK 榜

文心一言最新重磅发布!

飞桨PaddlePaddle

人工智能 百度飞桨 文心大模型 WAVE SUMMIT

LVS专访阿里云席明贤,从视频云2.0到“数能生智”的超长畅谈

阿里云视频云

云计算 阿里云 视频云

敏捷采购:如何在采购中应用敏捷方法

ShineScrum捷行

敏捷 敏捷采购

直播平台开发协议分析篇(一):会话初始化协议SIP

山东布谷科技

软件开发 SIP 源码搭建 直播平台开发 会话初始化协议

vivo 容器集群监控系统优化之道

vivo互联网技术

可观测性 Prometheus 云原生监控 Victoriametrics

高级插图和绘图 VectorStyler for Mac激活包

mac大玩家j

Mac Mac 软件 绘图工具 绘画软件

Spring Cloud OpenFeign - 远程调用

java易二三

Java spring 程序员 计算机 科技

软件测试 | web跟踪元素属性

测吧(北京)科技有限公司

测试

软件测试 | 使用以URL方式编码的数据

测吧(北京)科技有限公司

测试

Seamless Roaming with IPQ6010 and IPQ6018: Elevating Industrial-Grade WiFi6 Solutions

wallyslilly

IPQ6010 ipq6018 IPQ6000

【直播合集】HDC.Together 2023 精彩回顾!收藏勿错过~

HarmonyOS开发者

HarmonyOS

从0开始学Java——抛出和声明异常的代码实现

java易二三

Java 程序员 计算机 科技

mac端好用的Java开发分析 JProfiler 13 激活中文版附密钥

胖墩儿不胖y

Mac Mac 软件 Java开发分析工具 Java分析

搜文本搜位置搜图片,1小时玩转Elasticsearch

阿里云大数据AI技术

软件测试 | 查看隐藏表单域

测吧(北京)科技有限公司

测试

软件测试 | 计算散列值

测吧(北京)科技有限公司

测试

[BitSail] Connector开发详解系列三:SourceReader

字节跳动数据平台

大数据 数据治理 数据研发 企业号 8 月 PK 榜

Beyond Compare 4 for Mac(文件对比工具) 4.4.6(27483)中文版

mac

Beyond Compare 4 苹果mac Windows软件下载 文件比较对比工具

WPS Office AI实战总结,智能化办公时代已来

MavenTalker

Microsoft 365 Copilot WPSAI

软件测试 | 使用WebScarab观察实时的POST数据

测吧(北京)科技有限公司

测试

软件测试 | 使用TamperData观察实时的响应头

测吧(北京)科技有限公司

测试

零信任体系化能力建设(2):设备风险与安全监控

权说安全

怎样强化你的HTTP 安全标头?_安全_Brian Jackson_InfoQ精选文章