[网络/Java EE/Web]Tomcat/Nginx中配置全局的安全响应头(header)——X-Frame-Options / X-XSS-Protection / X-Content-Options
Step1 配置Tomcat
step1.1 查看是否已配置目标的HTTP网络安全头
- 方式1 – Tomcat / conf/web.xml
cat /opt/myTomcat/conf/web.xml | grep --color=auto -C 10 -i "httpHeaderSecurity"

- 方式2 查看Tomcat的任一Web HTTP网页/请求

step1.2 确认Tomcat服务器中(catalina.jar)是否存在HttpHeaderSecurityFilter类
[root@hostName testUser]# jar -tf /opt/myTomcat/lib/catalina.jar | grep -i "HttpHeaderSecurityFilter"
org/apache/catalina/filters/HttpHeaderSecurityFilter$XFrameOption.class
org/apache/catalina/filters/HttpHeaderSecurityFilter.class

step1.3 利用HttpHeaderSecurityFilter为Tomcat配置全局的HTTP安全响应头
注:配置后,Tomcat会自动加载新的配置,故 无需重启Tomcat
vi /opt/myTomcat/conf/web.xml
(文件内加入如下配置)
- SAMEORIGIN 版配置
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>antiClickJackingEnabled</param-name> <!-- X-Frame-Options 默认(DENY) -->
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingOption</param-name> <!-- X-Frame-Options 默认(DENY) - org.apache.catalina.filters.HttpHeaderSecurityFilter 的内部枚举类 enum XFrameOption { DENY("DENY"),SAME_ORIGIN("SAMEORIGIN"),ALLOW_FROM("ALLOW-FROM"); } -->
<param-value>SAMEORIGIN</param-value>
</init-param>
<init-param>
<param-name>blockContentTypeSniffingEnabled</param-name> <!-- X-Content-Type-Options 默认: true(nosniff) -->
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>xssProtectionEnabled</param-name> <!-- X-XSS-Protection 默认: true(1; mode=block) -->
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
- ALLOW-FROM 版
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>antiClickJackingEnabled</param-name> <!-- X-Frame-Options 默认(DENY) -->
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingOption</param-name>
<!-- X-Frame-Options 默认(DENY) -
org.apache.catalina.filters.HttpHeaderSecurityFilter 的内部枚举类 enum XFrameOption { DENY("DENY"),SAME_ORIGIN("SAMEORIGIN"),ALLOW_FROM("ALLOW-FROM"); } -->
<param-value>ALLOW-FROM</param-value>
</init-param>
<init-param>
<param-name>antiClickJackingUri</param-name>
<!-- <param-value>http://10.xx.yy.148:18460</param-value> -->
<param-value>[http://10.xx.yy.148:18460][http://10.xx.yy.149:8085]</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
【备注】
配置http的响应头信息:属性名 X-Frame-Options / X-XSS-Protection / X-Content-Options
- https://blog.csdn.net/liangpingguo/article/details/86703284
- https://blog.csdn.net/li_wen_jin/article/details/88353763
1.此配置将即时生效,Tomcat会实时加载,故 配置完成后,无需重启
Step2 配置Nginx
step2.1 配置Nginx的HTTP安全头
# vi /usr/local/nginx/conf/nginx.conf
在http(或server)模块内添加如下内容:
add_header X-Frame-Options "SAMEORIGIN"; #或 add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff"; # 禁止嗅探文件类型

step2.2 添加后,重载nginx配置
注:重载(reload)操作不会使Nginx停止服务。
# /usr/local/nginx/sbin/nginx -s reload

Step3 验证配置是否生效
(验证方式同step1.1)

4 header配置详解
此3个header配置可避免以下3种(低危)安全漏洞:
- [低危]HTTP响应头 X-Content-Options:nosniff

- [低危]HTTP响应头使用 X-XSS-Protection

- [低危]HTTP响应头使用 X-Frame-Options

4-1 X-Content-Options
远程网络应用程序不设置X-Content-Options响应头。
X-Content-Options是Microsoft提出的一种缓解MIME类型攻击的方式,并且已经在Chrome和Safari中实现。

4-2 X-Frame-Options
可以配置的参数值有3个:
1.DENY:浏览器拒绝当前页面加载任何Frame页面。 [Tomcat中org.apache.catalina.filters.HttpHeaderSecurityFilter(catalina.jar)的默认值]
2.SAMEORIGIN:页面只能加载入同源域名下的页面。[一般配置此值即可]
3.ALLOW-FROM uri:只能被嵌入到指定域名的框架中。
5 补充问题
(现暂时没空)
- X-Frame-Options / X-XSS-Protection / X-Content-Options 三者的配置的值的意义
- 3个header涉及的安全漏洞
- 讲解 org.apache.catalina.filters.HttpHeaderSecurityFilter 源码
org.apache.catalina.filters.HttpHeaderSecurityFilter
[来源]
Tomcat(任何版本): /lib/catalina.jar:org.apache.catalina.filters.HttpHeaderSecurityFilter.class
Tomcat(source版): /java/org/apache/catalina/filters/HttpHeaderSecurityFilter.java
[重要的内置属性]
private static final String HSTS_HEADER_NAME = "Strict-Transport-Security"; //HSTS ,严格的传输安全
private static final String ANTI_CLICK_JACKING_HEADER_NAME = "X-Frame-Options"; //Click-jacking protection ,拒绝 frame
private static final String BLOCK_CONTENT_TYPE_SNIFFING_HEADER_NAME = "X-Content-Type-Options"; //Block content sniffing ,阻止内容嗅探
private static final String XSS_PROTECTION_HEADER_NAME = "X-XSS-Protection"; //Cross-site scripting filter protection , 跨站脚本过滤器保护

- 3个header的浏览器兼容性
- Java Web中 配置header的其它方法?
可参见该博文: Tomcat 配置“X-Frame-Options头” - CSDN
X 参考与推荐文献
- Tomcat 配置“X-Frame-Options头” - CSDN
- nginx设置X-Frame-Options的两种方法 - webkaka.com
- tomcat 配置修复X-Frame-Options 漏洞方法 - CSDN
[网络/Java EE/Web]Tomcat/Nginx中配置全局的安全响应头(header)——X-Frame-Options / X-XSS-Protection / X-Content-Options的更多相关文章
- Java eclipse Myeclipse tomcat安装及配置
Java eclipse Myeclipse tomcat安装及配置作者:天涯 来源:中国自学编程网 发布日期:1223857747目前,开发Java网页程序,最流行的就是用Myeclipse来进行编 ...
- 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式
通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率 ...
- 高性能Web服务器Nginx的配置与部署研究(7)核心模块之主模块的非测试常用指令
1. error_log 含义:指定存储错误日志的文件 语法:error_log <file> [debug|info|notice|warn|error|crit] 缺省:${prefi ...
- web.config文件中配置数据库连接的两种方式
web.config文件中配置数据库连接的两种方式 标签: 数据库webconfig 2015-04-28 18:18 31590人阅读 评论(1)收藏举报 分类: 数据库(74) 在网站开发 ...
- nginx中配置proxy_pass
在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走. 下面四种 ...
- Nginx的配置文件简介及在Nginx中配置基于不同ip的虚拟主机
Nginx的配置文件简介及在Nginx中配置基于不同ip的虚拟主机: #user nobody; worker_processes 1; #error_log logs/error.log; #err ...
- 如何在web.config文件中配置Session变量的生命周期
实例说明:在网上购物商城中,为了维护在线购物环境,一般只有注册会员才可以购买商品.实现购物功能时,先通过Session变量记录会员的登录名,然后在购买商品页面通过判断会员是否登录确定其能否购买商品. ...
- 14 nginx 中配置 expires缓存提升网站负载
一:nginx 中配置 expires缓存提升网站负载 对于网站的图片,尤其是新闻站, 图片一旦发布, 改动的可能是非常小的.我们希望 能否在用户访问一次后, 图片缓存在用户的浏览器端,且时间比较长的 ...
- Nginx中配置vue,react项目地址
如题 像以前在Nginx中配置域名解析的时候只需要在conf.d文件夹下添加对应的xx.conf文件(当然了你也可以在nginx.conf)下配置. 如果是以前的老项目只需要在配置文件中server内 ...
- Nginx中配置https中引用http的问题
Nginx中配置https中引用http的问题 遇到问题: 今天公司要在后台增加直播入口,使用腾讯云的实时音视频,要求是必须使用https,在配置完强制跳转https候,发现后台无法上传图片,在浏览器 ...
随机推荐
- 关于group by的一个问题
项目场景: 有时候,遇到数据库重复数据,需要将数据进行分组,并取出其中一条来展示,这时就需要用到group by语句.但是,如果mysql是高版本,当执行group by时,select的字段不属于g ...
- 获取gps
package com.example.myapplication;import android.Manifest;import android.annotation.SuppressLint;imp ...
- linux sync命令
Linux sync命令用于数据同步,sync命令是在关闭Linux系统时使用的. Linux 系统中欲写入硬盘的资料有的时候为了效率起见,会写到 filesystem buffer 中,这个 buf ...
- dart 环境搭建
1. 打开dart官网 获取 Dart SDK | Dart 2. 安装Chocolatey,以管理员身份打开cmd,输入下面代码 Set-ExecutionPolicy Bypass -Scope ...
- JS刷题自制参考知识
(建议复制到本地,需要看的时候打开Typora,大纲点击要查的内容即可,我一般记不清某个方法的时候就查一下.) 基础 Typescript TypeScript是一个开源的.渐进式包含类型的JavaS ...
- 【内存管理】ION内存管理器浅析(system heap)(基于linux 4.14)
什么是ION ION具体不知道是什么的缩写,只知道是android系统上google引入的内存管理方式,为了实现用户与内核间数据共享时零拷贝.多用于多媒体,比如camera和display,graph ...
- hadoopzookeeper
一.zookeeper是什么(概括)? Zookeeper是一个分布式协调服务的开源框架,为分布式程序提供协调服务,同时用来解决分布式集群中应用系统的数据一致性问题. zookeeper在本质上是一个 ...
- 关于 用鼠标移动拖放 TabControl 标签 操作 实现 类
1.相关说明已有 2.本类有可以改进的地方,如更进,希望交流 3.对多行标签的支持没做特别解决,效果不太好 4.初学者使用,即可通过其构造函数直接加载需要赋予此拖放功能的 TabControl 即可实 ...
- 2020/5/26-笔记:Oracle数据库表空间的管理
1新建表空间 (1)普通(本地管理)表空间: create tablespace 表空间名 datafile'OS系统文件路径\文件名.dbf' size nM; 或 create tablespac ...
- Spring AOP的动态代理原理和XML与注解配置
AOP 实现底层就是对上面的动态代理的代码进行了封装,封装后我们只需要对需要关注的部分进行代码编写,并通过配置的方式完成指定目标的方法增强. 相关术语: Target(目标对象):代理的目标对象 Pr ...