HTTP协议安全头部的笔记

本文于2016年3月完成,发布在个人博客网站上。


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

HTTP协议的安全头部

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

HTTP Strict Transport Security

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

X-Frame-Options

X-Content-Type-Options

X-XSS-Protection

Content-Security-Policy

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

如何增加安全头部

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的配置。

复制代码
<!--
    <filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <async-supported>true</async-supported>
    </filter>
-->
<!-- 其它配置 -->
<!--
    <filter-mapping>
        <filter-name>httpHeaderSecurity</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
-->

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

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

其它资料

相关推荐
无敌最俊朗@5 小时前
STL-vector面试剖析(面试复习4)
java·面试·职场和发展
PPPPickup5 小时前
easychat项目复盘---获取联系人列表,联系人详细,删除拉黑联系人
java·前端·javascript
LiamTuc5 小时前
Java构造函数
java·开发语言
长安er6 小时前
LeetCode 206/92/25 链表翻转问题-“盒子-标签-纸条模型”
java·数据结构·算法·leetcode·链表·链表翻转
菜鸟plus+6 小时前
N+1查询
java·服务器·数据库
我要添砖java6 小时前
《JAVAEE》网络编程-什么是网络?
java·网络·java-ee
CoderYanger6 小时前
动态规划算法-01背包问题:50.分割等和子集
java·算法·leetcode·动态规划·1024程序员节
汽车仪器仪表相关领域6 小时前
LambdaCAN:重构专业空燃比测量的数字化范式
大数据·人工智能·功能测试·安全·重构·汽车·压力测试
白帽黑客-晨哥7 小时前
OWASP Top 10 2024 深度解析:Web安全新威胁与防御策略
安全·web安全·网络安全·漏洞挖掘·副业
独行soc7 小时前
2025年渗透测试面试题总结-275(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮