本文于2016年3月完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。


近日项目组对当前开发、维护的Web系统做了AppScan扫描,扫描的结果惨不忍睹,问题很多。报告中报到“缺乏HTTP安全头部”。之前对HTTP协议的安全头部了解不多,为了消除AppScan报告中的警告,同时做更多的了解,搜集了一些相关的资料,于是有了本篇汇总笔记。

HTTP协议的安全头部

安全是一个非常大的话题,比如下面提到的HTTP安全头部,每个都可以使用单独的文章来说明和介绍。但Jackie当前还处于Web开发的入门阶段,还谈不上什么心得体会,先把找到的文章罗列出来吧。

  • 4 HTTP SECURITY HEADERS YOU SHOULD ALWAYS BE USING,中文翻译一,中文翻译二
  • Guidelines for Setting Security Headers,中文版
  • 一些安全相关的HTTP响应头

HTTP Strict Transport Security

  • 来自mozilla开发者网站,HTTP Strict Transport Security
  • 来自wikipedia,HTTP Strict Transport Security
  • 来自owasp,HTTP Strict Transport Security
  • 为什么我们要使用HTTP Strict Transport Security?

对于企业级Web应用,最简单直接的方法是禁用HTTP访问方式,全站启用HTTPS协议的支持,省事也安全;不过对于大型网站而言,全站启用HTTPS会带来其它方面的工作,来自百度运维部的相关总结值得一看,如下。

  • 全站 https 时代的号角 : 大型网站的 https 实践系列
  • 大型网站的 HTTPS 实践(1):HTTPS 协议和原理
  • 大型网站的 HTTPS 实践(2):HTTPS 对性能的影响
  • 大型网站的 HTTPS 实践(3):基于协议和配置的优化
  • 大型网站的 HTTPS 实践(4):协议层以外的实践

X-Frame-Options

  • X-Frame-Options的介绍,中文版
  • 使用HTTP 响应头信息中的 X-Frame-Options 属性防止网页被Frame
  • 点击劫持(clickjacking)与X-Frame-Options Header
  • Overcoming “Display forbidden by X-Frame-Options”,stackoverflow上的帖子,值得一读

X-Content-Type-Options

  • 减少 MIME 类型的安全风险
  • IE8 Security Part V: Comprehensive Protection
  • [Web开发] IE 如何判断文件的类型

X-XSS-Protection

  • Controlling the XSS Filter
  • 利用IE8/9浏览器XSS跨站攻击脚本筛选过滤特性(X-XSS-Protection)
  • 一个跨域请求的XSS漏洞再续

Content-Security-Policy

据caniuse上查询到的数据,IE系列的浏览器对CSP支持程度较低;由于我厂的用户主要还是使用IE系列的浏览器,因此暂时不需要启用支持。

  • Content Security Policy Level 2
  • W3C中文网站wiki上CSP的词条
  • Content Security Policy Level 2 介绍
  • Content Security Policy 介绍
  • HTTP 的内容安全策略(CSP)
  • HTML5安全介绍之内容安全策略(CSP)简介,中文版
  • HTTP 的内容安全策略(CSP)

如何增加安全头部nginx的配置

网上有很多现成的资料,如下内容来自keakon的涂鸦馆,折腾了一下 nginx 配置

add_header X-Frame-Options SAMEORIGIN; # 只允许本站用 frame 来嵌套add_header X-Content-Type-Options nosniff; # 禁止嗅探文件类型add_header X-XSS-Protection "1; mode=block"; # XSS 保护add_header Strict-Transport-Security: max-age=31536000; includeSubDomains

Tomcat的配置

大概是在7.0.63版本,Apache Tomcat引入了org.apache.catalina.filters.HttpHeaderSecurityFilter,用于增加对前述安全头部的支持,但并不完善;当前9.0.X版本中支持如下安全头部。

  • Strict-Transport-Security
  • X-Frame-Options
  • X-Content-Type-Options
  • X-XSS-Protection

如果使用7.0.63版本以后的Tomcat,可以修改$CATALINA_BASE/conf/web.xml文件,找到并取消如下Filter的配置。

<!--            httpHeaderSecurity        org.apache.catalina.filters.HttpHeaderSecurityFilter        true    --><!--            httpHeaderSecurity        /*        REQUEST    -->

如果使用低于7.0.63版本的Tomcat,可以使用org.apache.catalina.filters.HttpHeaderSecurityFilter类的最新代码编译、打包成扩展包,放在$CATALINA_BASE/lib路径下;同时在$CATALINA_BASE/conf/web.xml文件中增加上述配置。

org.apache.catalina.filters.HttpHeaderSecurityFilter提供了一些扩展配置,具体使用方法可以参考Apache Tomcat的官方文档。

其它资料

  • Can I Use,浏览器兼容情况验证的网站
  • 使用HTTP Headers防御WEB攻击(Part1)
  • 使用HTTP Headers防御WEB攻击(Part2)
  • 利用CSP探测网站登陆状态(alipay/baidu为例)
  • 浏览器安全策略说之内容安全策略CSP
  • web前端利用HSTS(新的Web安全协议HTTP Strict Transport Security)漏洞的超级Cookie(HSTS Super Cookie)

本文来自博客园,作者:jackieathome,转载请注明原文链接:https://www.cnblogs.com/jackieathome/p/17936552.html