1.Strict-Transport-Security

HTTP Strict-Transport-Security,简称为HSTS。

作用:允许一个HTTPS网站,要求浏览器总是通过HTTPS访问它。

  1. strict-transport-security: max-age=16070400; includeSubDomains
  • includeSubDomains,可选,用于指定是否作用于子域名
  • 支持HSTS的浏览器遇到这个响应头,会把当前网站加入HSTS列表,然后在max-age指定的秒数内,当前网站所有请求都会被浏览器重定向为https。
  • Chrome内置了一个HSTS列表,默认包含Google、Paypal、Twitter、Linode等服务。输入chrome://net-internals/#hsts,进入HSTS管理界面,可以增加/删除/查询HSTS记录。

2.X-Frame-Options:是否允许一个页面可在<frame>、<iframe>、<object>中展现的标记。

作用:减少/避免点击劫持 (clickjacking) 的攻击。

使用方式如下:

  1. x-frame-options: SAMEORIGIN

响应头支持三种配置:

  • DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
  • SAMEORIGIN:表示该页面可以在相同域名页面的 frame 中展示。
  • ALLOW-FROM uri:表示该页面可以在指定来源的 frame 中展示。

3.X-XSS-Protection

作用:防范XSS攻击。

PS:这个是旧属性,基本上可以被CSP取代,但是仍可以为还没有支持CSP的浏览器提供一层保护。

主流浏览器默认都开启了XSS保护。

使用方式如下:

  1. X-XSS-Protection: 1; mode=block; report=/_/http-sec-report

支持配置:

  • 0:禁止XSS保护
  • 1:启用XSS保护:启用XSS保护,浏览器检测到XSS攻击会自动过滤非安全部分内容
  • 1;mode=block:启用XSS保护,并在检测到XSS攻击的时候停止渲染页面
  • 1;report=:启用XSS保护,检测到XSS攻击的时候,浏览器会自动过滤非安全内容,同时上报到指定URI。

4.X-Content-Type-Options

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

背景:

浏览器通常会根据响应头Content-Type字段来分辨资源类型。有些资源的Content-Type是错的或者未定义。这时,浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。

利用这个特性,攻击者可以让原本应该解析为图片的请求被解析为JavaScript。

使用方法:

  1. X-Content-Type-Options: nosniff

5.X-Content-Security-Policy(旧版)/Content-Security-Policy

作用:用于定义页面可以加载哪些资源,减少和上报XSS的攻击,防止数据包嗅探攻击。

响应头:

  • Content-Security-Policy
  • X-Content-Security-Policy
  • X-Webkit-CSP

使用方法:

  1. Content-Security-Policy: default-src 'self'
  • 一个策略由一系列策略指令组成,每个策略指令都描述了一个针对某个特定类型资源以及生效范围的策略。
  • default-src是CSP指令,多个指令之间使用英文分号分割;
  • self是指令值,多个指令值用英文空格分割。
  • 支持的CSP指令

元素也可以用于配置CSP:
```


  1. 指令 | 指令值示例 | 说明
  2. --- | --- | ---
  3. default-src | 'self' cnd.a.com | 定义针对所有类型资源的默认加载策略,某类型资源如果没有单独定义策略,就使用默认的。
  4. script-src | 'self' js.a.com | 定义针对JavaScript的加载策略
  5. style-src | 'self' css.a.com | 定义针对样式的加载策略
  6. img-src | 'self' img.a.com | 定义针对图片的加载策略
  7. connect-src | 'self' | 针对AjaxWebSocket等请求的加载策略。不允许的情况下,浏览器会模拟一个状态为400的响应。
  8. font-src | font.a.com | 针对WebFont的加载策略
  9. object-src | 'self' | 针对\<object>、\<embed>、\<applet>等标签引入的flash等插件的加载策略
  10. media-src | media.a.com | 针对\<audio>、\<video>等标签引入的HTML多媒体的加载策略。
  11. frame-src | 'self' | 针对frame的加载策略
  12. sanbox | allow-forms | 对请求的资源启用sandbox(类似于iframesandbox属性)
  13. report-uri | /report-uri | 告诉浏览器如果请求不被策略允许,往哪个地址提交日志信息。如果想让浏览器只汇报日志,不阻止任何内容,可以改用 Content-Security-Policy-Report-Only 头。
  14. 指令值可以由下面内容组成:
  15. 指令值 | 指令值示例 | 说明
  16. --- | --- | ---
  17. | img-src | 允许任何内容
  18. 'none' | img-src 'none' | 不允许任何内容
  19. 'self' | img-src 'self' | 允许来自相同源的内容(相同的协议、域名和端口)。
  20. data: | img-src data: | 允许data:协议(如base64编码的图片)
  21. www.a.com | img-src img.a.com | 允许加载指定域名的资源
  22. .a.com | img-src .a.com | 允许加载a.com任何子域的资源
  23. https://img.com | img-src https://img.com | 允许加载img.com的https资源
  24. https: | img-src https: | 允许加载https资源
  25. 'unsafe-inline' | script-src 'unsafe-inline' | 允许加载inline资源(例如常见的style属性,onclick, inline js, inline css)。
  26. 'unsafe-eval' | script-src 'unsafe-eval' | 允许加载动态js代码,例如eval()。
  27. ### 违例报告
  28. * document-uri:发生违规的文档的URI
  29. * referrer:违规发生处的文档引用地址
  30. * blocked-uri:被CSP阻止的资源URI。如果被阻止的URI来自不同的源而非文档URI,则被阻止的资源URI会被删减,仅保留协议、主机和端口号。
  31. * violated-directive:违反的策略名称
  32. * original-policy:在Content-Security-Policy HTTP header中指明的原始策略。
  33. ## 6.Set-Cookie
  34. * HttpOnly:防止使用javascript(如document.cookie)去存取cookie
  35. * Secure:强制cookie只能在HTTPS环境下传递
  36. ## 7.Referrer-Policy
  37. 作用:增加隐私保护。
  38. 可配置值:
  39. * no-referrer: 不允许被记录
  40. * origin:只记录origin,即域名
  41. * strict-origin:只有在HTTPS->HTTPS之间才会被记录下来
  42. * strict-origin-when-cross-origin:同源请求会发送完整的URLHTTPS->HTTPS,发送源;降级下不发送此首部。
  43. * no-referrer-when-downgrade(default):同strict-origin
  44. * origin-when-cross-origin:对于同源的请求,会发送完整的URL作为引用地址,但是对于非同源请求仅发送文件的源。
  45. * same-origin:对于同源请求会发送完整URL,非同源请求则不发送referer
  46. * unsafe-url:无论是同源请求还是非同源请求,都发送完整的URL(移除参数信息之后)作为引用地址。(可能会泄漏敏感信息)
  47. ## 8.Public-Key-Pins(HPKP)
  48. 作用:防止中间人攻击。是HTTPS网站防止攻击者利用CA错误签发的证书进行中间人攻击的一种安全机制,用于预防CA遭入侵或者其他会造成CA签发未授权证书的情况。
  49. 服务器通过Public-Key-Pins(或Public-Key-Pins-Report-Onky用于监测)header向浏览器传递HTTP公钥固定信息。
  50. 基本格式:

Public-Key-Pins: pin-sha256="base64=="; max-age=expireTime [; includeSubdomains][; report-uri="reportURI"]

  1. 字段含义:
  2. * pin-sha256:即证书指纹,允许出现多次,实际上应用最少指定两个;
  3. * max-age:过期时间
  4. * includeSubdomains:是否包含子域
  5. * report-uri:验证失败时上报的地址
  6. 安全扫描网站:https://securityheaders.com/

一些安全相关的HTTP header的更多相关文章

  1. 一些安全相关的HTTP响应头

    转:http://www.2cto.com/Article/201307/230740.html 现代浏览器提供了一些安全相关的响应头,使用这些响应头一般只需要修改服务器配置即可,不需要修改程序代码, ...

  2. 谈谈关于PHP的代码安全相关的一些致命知识

    谈谈关于PHP的代码安全相关的一些致命知识 目标 本教程讲解如何防御最常见的安全威胁:SQL 注入.操纵 GET 和 POST 变量.缓冲区溢出攻击.跨站点脚本攻击.浏览器内的数据操纵和远程表单提交. ...

  3. Nginx安全相关配置和nginx.conf中文详解

    一.centos下redis安全相关 1.背景 在使用云服务器时,如果我们的redis关闭了protected-mode模式,被病毒攻击的可能会大大增加,因此我们使用redis时候,最好更改默认端口, ...

  4. 安全相关的head头

    与安全相关的head头包括 参考网站:https://developer.mozilla.org/en-US/docs/Web/HTTP Content-Security-Policy(CSP):禁止 ...

  5. 【Azure 应用服务】App Service 通过配置web.config来添加请求返回的响应头(Response Header)

    问题描述 在Azure App Service上部署了站点,想要在网站的响应头中加一个字段(Cache-Control),并设置为固定值(Cache-Control:no-store) 效果类似于本地 ...

  6. RestTemplate发送请求并携带header信息

    1.使用restTemplate的postForObject方法 注:目前没有发现发送携带header信息的getForObject方法. HttpHeaders headers = new Http ...

  7. Web安全相关(二):跨站请求伪造(CSRF/XSRF)

    简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...

  8. ABP Zero示例项目登录报错“Empty or invalid anti forgery header token.”问题解决

    ABP Zero项目,登录时出现如图"Empty or invalid anti forgery header token."错误提示的解决方法: 在 WebModule.cs的P ...

  9. ASP.NET MVC 3 网站优化总结(三)Specify Vary: Accept-Encoding header

    继续进行 ASP.NET MVC 3 网站优化工作,使用 Google Page 检测发现提示 You should Specify Vary: Accept-Encoding header,The ...

随机推荐

  1. mysql 开发进阶篇系列 47 物理备份与恢复(xtrabackup 的完全备份恢复,恢复后重启失败总结)

    一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全 ...

  2. sql server 性能调优之 CPU消耗最大资源分析1 (自sqlserver服务启动以后)

    一. 概述 上次在介绍性能调优中讲到了I/O的开销查看及维护,这次介绍CPU的开销及维护, 在调优方面是可以从多个维度去发现问题如I/O,CPU,  内存,锁等,不管从哪个维度去解决,都能达到调优的效 ...

  3. Disruptor 为什么这么快?

    为什么Disruptor不使用队列来实现RingBuffer   队列有两个指针,一个指向队头,一个指向队尾.如果有超过一个生产者想要往队列里放东西,尾指针就将成为一个冲突点,因为有多个线程要更新它. ...

  4. zookeeper配置中心实战--solrcloud zookeeper配置中心原理及源码分析

    程序的发展,需要引入集中配置: 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关.参数的配置.服务器的地址…… 并且对配置的期望也越来越高,配置修改后实时生效,灰度发布,分环境.分集群管理配 ...

  5. Java 趣史-差点把 Java 命名成了 Silk(丝绸)

    差点把 Java 命名成了 Silk(丝绸) Java 命名的由来 Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名.Java语言中的许多库类名称,多与咖啡有关:如JavaBeans(咖啡豆). ...

  6. 匿名函数python内置高阶函数以及递归

    匿名函数 python定义一个函数通常使用def关键词,后面跟函数名,然后是注释.代码块等. def func(): '''注释''' print('from func') 这样就在全局命名空间定义了 ...

  7. 跨域学习笔记2--WebApi 跨域问题解决方案:CORS

    自己并不懂,在此先记录下来,留待以后学习... 正文 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨 ...

  8. python基础学习(三)变量和类型

    变量的作用:变量就是用来存储数据的. 变量的定义 在python中,变量在使用之前需要进行赋值,变量只有赋值后才能使用,如果变量没有赋值就使用会出现什么情况呢?如下图,使用之前变量未定义,会报错,如下 ...

  9. Python3 系列之 可变参数和关键字参数

    刚开始接触 python 的时候,对 python 中的 *wargs (可变参数) 和 **kwargs (关键字参数)的理解不是很透彻,看了一下 <Explore Python>一书, ...

  10. JS实现缓动效果-让div运动起来

    var tween = { linear:function(t,b,c,d){ return c*t/d + b; }, easeIn:function(t,b,c,d){ return c * ( ...