HTTP Strict Transport Security,简称为HSTS。它允许一个HTTPS网站,要求浏览器总是通过HTTPS来访问它。现阶段,除了Chrome浏览器,Firefox4+,以及Firefox的NoScript扩展都支持这个响应头。

我们知道HTTPS相对于HTTP有更好的安全性,而很多HTTPS网站,也可以通过HTTP来访问。开发人员的失误或者用户主动输入地址,都有可能导致用户以HTTP访问网站,降低了安全性。一般,我们会通过Web Server发送301/302重定向来解决这个问题。现在有了HSTS,可以让浏览器帮你做这个跳转,省一次HTTP请求。另外,浏览器本地替换可以保证只会发送HTTPS请求,避免被劫持。

要使用HSTS,只需要在你的HTTPS网站响应头中,加入下面这行:

strict-transport-security: max-age=16070400; includeSubDomains

includeSubDomains是可选的,用来指定是否作用于子域名。支持HSTS的浏览器遇到这个响应头,会把当前网站加入HSTS列表,然后在max-age指定的秒数内,当前网站所有请求都会被重定向为https。即使用户主动输入http://或者不输入协议部分,都将重定向到https://地址。

Chrome内置了一个HSTS列表,默认包含Google、Paypal、Twitter、Linode等等服务。我们也可以在Chrome输入chrome://net-internals/#hsts,进入HSTS管理界面。在这个页面,你可以增加/删除/查询HSTS记录。例如,你想一直以https访问某网址,通过“add Domain”加上去就好了。查看Chrome内置的全部HSTS列表,或者想把自己的网站加入这个列表,请点这里

X-Frame-Options SAMEORIGIN;允许同源的域名嵌入iframe

Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://a.disquscdn.com; img-src 'self' data: https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; frame-src https://disqus.com”; 指定可以加载的资源,主要用于防止css攻击

X-Content-Type-Options: nosniff 互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。例如:"text/html"代表html文档,"image/png"是PNG图片,"text/css"是CSS样式文档。然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。例如,我们即使给一个html文档指定Content-Type为"text/plain",在IE8-中这个文档依然会被当做html来解析。利用浏览器的这个特性,攻击者甚至可以让原本应该解析为图片的请求被解析为JavaScript。通过上面这个响应头可以禁用浏览器的类型猜测行为。

x-xss-protection: "1; mode=block" 顾名思义,这个响应头是用来防范XSS的。最早我是在介绍IE8的文章里看到这个,现在主流浏览器都支持,并且默认都开启了XSS保护,用这个header可以关闭它。它有几种配置:

  • 0:禁用XSS保护;
  • 1:启用XSS保护;
  • 1; mode=block:启用XSS保护,并在检查到XSS攻击时,停止渲染页面(例如IE8中,检查到攻击时,整个页面会被一个#替换);

浏览器提供的XSS保护机制并不完美,但是开启后仍然可以提升攻击难度,总之没有特别的理由,不要关闭它。

server_tokens off;隐藏服务器版本号

转载于:https://www.cnblogs.com/hike2008/p/5825868.html

一些安全相关的HTTP响应头相关推荐

  1. apache服务器配置响应头,Web安全 之 X-Frame-Options响应头配置

    最近项目处于测试阶段,在安全报告中存在" X-Frame-Options 响应头缺失 "问题,显示可能会造成跨帧脚本编制攻击,如下图: X-Frame-Options: 值有三个: ...

  2. SpringBoot2.3 修改响应头、添加更新token、解决在过滤器中修改失败

    前言 使用Spring Boot开发项目的过程中,难免会遇到向响应头中写入一些信息,例如更新了的token,用户详情等信息.在请求头中添加,请求时就可以通过过滤器,拦截器等验证或者获得请求头传递的信息 ...

  3. mfc中picture control的用法_可能是最被误用的 HTTP 响应头之一 Cache-Control: must-revalidate

    在 HTTP 客户端(浏览器或者缓存服务器)上,如果某个 URL 对应的缓存过期了,客户端会再次向该 URL 发送一个条件请求(带有If-Modified-Since/If-None-Match请求头 ...

  4. 移除IIS默认的响应头

    在IIS+ASP.NET的运行环境,默认情况下会输出以下的响应头(Response Headers): 那如何移除这些响应头呢?下面我们来一个一个移除. 1. 移除Server 借助IIS URL R ...

  5. j2ee关于响应头的传输猜想

    服务器默认使用iso8859-1的编码格式将数据发送到客户端.对于响应体可以使用respones.setContentType("text/html;charset=uft-8") ...

  6. php 无法输出图像,ThinkPHP里无法输出图片 设置响应头

    今天写了一个PHP生成图片,想用浏览器查看,但是每次打开都是一串乱码,看样子是图片源二进制数据,然后查看了下响应头是text/html,那我明明设置了image/jpegheader("Co ...

  7. HTML做frame跳转设置响应头,X-Frame-Options header响应头如何配置

    摘要: X-Frame-Options:值有三个(1)DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许.(2)SAMEORIGIN:表示该页面可以在相... X- ...

  8. python flask 设置个性化的响应体 响应头 状态码

    目录 需求场景 使用return直接设置特定的响应信息 使用make_response设置特定的响应信息 需求场景 在api设计中,基于restful的设计原则,一个http的响应应该包含执行的响应信 ...

  9. python flask 设置 header 响应体、响应头、状态码

    需求场景 在api设计中,基于restful的设计原则,一个http的响应应该包含执行的响应信息以及状态码. 例如:一个错误信息的响应信息应该包含内容以及返回对应的设计错误码. 在flask中如何制定 ...

最新文章

  1. 宏基因组合种树,2-4天领证,1/2号车满员,3号车成立,机会来了
  2. 算法在ros中应用_烟火检测算法——中伟视界人工智能算法AI在智慧工地、石油中的应用_腾讯新闻...
  3. springboot配置index
  4. 西南大学0039c语言作业答案,2017年6月西南大学继续教育学院C语言0039大作业答案...
  5. linux操作系统下建用户,如何用Linux操作系统批量建立用户的shell
  6. linux hadoop namenode_HADOOP_HDFS伪分布式安装步骤
  7. 源码编译搭建LAMP环境
  8. Tricks Device 最短路+最大流
  9. 如何在 Mac 上播放 Keynote 演示文稿?
  10. 程序员的自我修养—链接、装载与库pdf
  11. C# TextBox光标操作 光标定位 光标移动到最后
  12. linux 文件查找
  13. 通信原理 | 信道特性及其数学模型
  14. 场效应管调光电路图_MOS管驱动电路,看这里就啥都懂了
  15. Navicat Premium 11.0.19中文破解版 安装
  16. 5, Swift tableView点击收起展开的效果
  17. 档案计算机管理软件,档案管理软件系统
  18. PRAM模型与Amdahl定律
  19. 苹果手机软件升级密码_苹果iPhone出现闪退解决办法
  20. 海康威视人脸识别智能终端获取设备事件二次开发Java

热门文章

  1. 登录加密的前后端测试
  2. [Swift]LeetCode835. 图像重叠 | Image Overlap
  3. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...
  4. MySQL设置默认引擎和字符集
  5. Axis 实现的SOAP附件的传输
  6. Linux系统资源限制
  7. MVC3教程之新手入门(转)
  8. MAX3232EUE小知识
  9. 5.25. Spring boot with Git version
  10. assert()函数用法