Tomcat服务器配置X-Content-Type-Options、X-XSS-Protection、Content-Security-Policy、X-Frame-Options
Posted on 2021-01-19 15:55 且行且思 阅读(4637) 评论(0) 编辑 收藏 举报Tomcat目录下,配置请求头
打开tomcat/conf/web.xml,增加如下配置
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param> <init-param>
<param-name>blockContentTypeSniffingEnabled</param-name>
<param-value>false</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>httpHeaderSecurity</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
备注:如果找不到org.apache.catalina.filters.HttpHeaderSecurityFilter相关jar,可以去高版本Tocat中的catalina中将对应的HttpHeaderSecurityFilter.class拷贝进当前的低版本中。
(用解压缩工具打开,直接拖拽进去,不要解压再压缩),然后重启服务,再查看请求头,你就会看到配置已生效。如图,左侧为未配置的请求头信息,右侧为配置后的请求头信息。
1、X-Frame-Options
是为了减少点击劫持(Clickjacking)而引入的一个响应头,这个响应头支持三种配置:
- DENY:不允许被任何页面嵌入;
- SAMEORIGIN:不允许被本域以外的页面嵌入;
- ALLOW-FROM uri:不允许被指定的域名以外的页面嵌入(Chrome现阶段不支持);
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
2、X-XSS-Protection
这个响应头是用来防范XSS的,现在主流浏览器都支持,并且默认都开启了XSS保护,用这个header可以关闭它。它有几种配置:
- 0:禁用XSS保护;
- 1:启用XSS保护;
- 1; mode=block:启用XSS保护,并在检查到XSS攻击时,停止渲染页面(例如IE8中,检查到攻击时,整个页面会被一个#替换);
浏览器提供的XSS保护机制并不完美,但是开启后仍然可以提升攻击难度,总之没有特别的理由,不要关闭它。
3、 X-Content-Type-Options
互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。例如:"text/html"代表html文档,"image/png"是PNG图片,"text/css"是CSS样式文档。然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。
例如,我们即使给一个html文档指定Content-Type为"text/plain",在IE8-中这个文档依然会被当做html来解析。利用浏览器的这个特性,攻击者甚至可以让原本应该解析为图片的请求被解析为JavaScript。通过下面这个响应头可以禁用浏览器的类型猜测行为:
这个响应头的值只能是nosniff,可用于IE8+和Chrome。
X-Content-Type-Options: nosniff
提示,但启用这项,X-Content-Type-Options
特性,img
标签使用浏览器访问页面时,图片不能正常呈现。
因此,必须修改 /conf/web.xml,禁用X-Content-Type-Options
特性 ,如下:
<init-param>
<param-name>blockContentTypeSniffingEnabled</param-name>
<param-value>false</param-value>
</init-param>
具体详见说明:https://www.cnblogs.com/Fooo/p/14301161.html
4.、X-Content-Security-Policy
这个响应头主要是用来定义页面可以加载哪些资源,减少XSS的发生。请参考:https://imququ.com/post/content-security-policy-reference.html
总结:如果使用Tomcat8以上的版本,可以忽略这些配置,8.0以上版本已自带安全相关配置,如需用到,直接去tomcat/conf/web.xml启用即可。