前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >X-Frame-Options等头部信息未配置解决方案

X-Frame-Options等头部信息未配置解决方案

作者头像
华创信息技术
发布2022-05-28 10:18:31
2.7K0
发布2022-05-28 10:18:31
举报
文章被收录于专栏:华创信息技术华创信息技术

文章时间:2021年5月21日 22:23:06 解决问题:配置“X-Frame-Options”、“X-Content-Type-Options”、“X-XSS-Protection” 基于环境:Tomcat、Nginx

针对如下这4个头部信息

代码语言:javascript
复制
X-Content-Type-Options、X-XSS-Protection、X-Frame-Options、Content-Security-Policy(我特殊)

Tomcat配置

Tomcat目录/conf/web.xml中的搜索httpHeaderSecurity配置(直接复制粘贴)

代码语言:javascript
复制
<filter-mapping>
      <filter-name>httpHeaderSecurity</filter-name>
      <url-pattern>/*</url-pattern>
      <dispatcher>REQUEST</dispatcher>
</filter-mapping>
<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>
        <param-value>true</param-value>
      </init-param>
      <init-param>
        <param-name>antiClickJackingOption</param-name>
        <param-value>SAMEORIGIN</param-value>
      </init-param>
</filter>

Nginx

代码语言:javascript
复制
    #已经在tomcat中进行处理则nginx中不用处理,在location里面找个地方加上即可
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

浏览器效果

x-frame.png
x-frame.png

这个配置一般在中间件(Tomcat、Nginx)上进行配置,上面给的配置,直接复制进去即可用!(不用问,直接复制)放进去之后别忘了重启,tomcat重启一下,nginx重载配置。

X-Frame-Options

是为了减少点击劫持(Clickjacking)而引入的一个响应头,这个响应头支持三种配置:

  • DENY:不允许被任何页面嵌入,浏览器拒绝当前页面加载任何Frame页面;
  • SAMEORIGIN:不允许被本域以外的页面嵌入,只能加载入同源域名下的页面;
  • ALLOW-FROM uri:不允许被指定的域名以外的页面嵌入,只能被嵌入到指定域名的框架中(Chrome现阶段不支持);

X-XSS-Protection

这个响应头是用来防范XSS的,现在主流浏览器都支持,并且默认都开启了XSS保护,用这个header可以关闭它。它有几种配置:

  • 0:禁用XSS保护;
  • 1:启用XSS保护;
  • 1; mode=block:启用XSS保护,并在检查到XSS攻击时,停止渲染页面(例如IE8中,检查到攻击时,整个页面会被一个#替换);

浏览器提供的XSS保护机制并不完美,但是开启后仍然可以提升攻击难度,总之没有特别的理由,不要关闭它。

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。

代码语言:javascript
复制
X-Content-Type-Options: nosniff

X-Content-Security-Policy(抄作业)

这个响应头主要是用来定义页面可以加载哪些资源,减少XSS的发生。请参考:https://imququ.com/post/content-security-policy-reference.html

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

代码语言:javascript
复制
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'");
20210325101829456.png
20210325101829456.png

Content-Security-Policy相关资料参考:https://www.w3.org/TR/CSP/#directive-frame-ancestors mozilla:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy HTTP 响应头Content-Security-Policy:https://blog.csdn.net/realmardrid/article/details/108204849 Content Security Policy 入门教程:http://www.ruanyifeng.com/blog/2016/09/csp.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-05-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Tomcat配置
  • Nginx
    • 浏览器效果
      • X-Frame-Options
        • X-XSS-Protection
          • X-Content-Type-Options
            • X-Content-Security-Policy(抄作业)
            相关产品与服务
            消息队列 TDMQ
            消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档