Tomcat服务器配置X-Content-Type-Options、X-XSS-Protection、Content-Security-Policy、X-Frame-Options

Tomcat目录下,配置请求头

        打开tomcat/conf/web.xml,增加如下配置(交流群:700637673)

    <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>
        <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现阶段不支持);

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

4.、X-Content-Security-Policy

        这个响应头主要是用来定义页面可以加载哪些资源,减少XSS的发生。请参考:Content Security Policy 介绍 | JerryQu 的小站

        如何设置CSP呢,我们可以通过过滤器统一给其请求头添加,可参考下边我随便写的两个:

HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Content-Security-Policy", "frame-ancestors 'self'");
//httpResponse.setHeader("Content-Security-Policy", "default-src 'self';connect-src *; script-src 'self' 'unsafe-eval' 'unsafe-inline';style-src 'self' 'unsafe-inline';img-src 'self' * data: ; frame-ancestors 'self'");

Content-Security-Policy相关资料参考 https://www.w3.org/TR/CSP/#directive-frame-ancestors ,

Content-Security-Policy - HTTP | MDN

害~英语不行,大伙自力更生吧。参考地址

配置完的效果如下

总结:如果使用Tomcat8以上的版本,可以忽略这些配置,8.0以上版本已自带安全相关配置,如需用到,直接去tomcat/conf/web.xml启用即可。

回答: "X-Content-Type-Options"是一个响应头,用于指示浏览器在处理资源时如何处理MIME类型。如果服务器发送响应头 "X-Content-Type-Options: nosniff",则script和styleSheet元素会拒绝包含错误的MIME类型的响应。这是一种安全功能,有助于防止基于MIME类型混淆的攻击。\[1\]\[2\]在Windows操作系统中,可以通过配置服务器来发送这个响应头,以增加网站的安全性。 #### 引用[.reference_title] - *1* [X-Content-Type-Options: nosniff](https://blog.csdn.net/weixin_34040079/article/details/92313326)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [web安全:x-content-type-options头设置](https://blog.csdn.net/juruiyuan111/article/details/114964427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Tomcat服务器配置X-Content-Type-Options、X-XSS-ProtectionContent-Security-Policy、X-Frame-Options](https://blog.csdn.net/li_wen_jin/article/details/88353763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值