Content-Security-Policy,X-Frame-Options头未设置”警告的过滤器

安全监测反馈如下: 

 有时候为了防止网页被别人的网站iframe,我们可以通过在服务端设置HTTP头部中的X-Frame-Options信息。

X-Frame-Options 响应头有三个可选的值:
DENY:页面不能被嵌入到任何iframe或frame中;
SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中;
ALLOW-FROM:页面允许frame或frame加载。

在服务端设置的方式如下:

Java代码:
response.addHeader("x-frame-options","SAMEORIGIN");
Nginx配置:
add_header X-Frame-Options SAMEORIGIN
Apache配置:
Header always append X-Frame-Options SAMEORIGIN
 

 

解决方案(第二种解决方法)

创建一个XFrameOptionsHeaderFilter拦截器

package com.fh.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 针对下述问题,添加HttpServletRequest,HttpServletResponse 拦截
 * 问题描述:返回X-Frame-Options或Content- Security-Policy (使用"frame-ancestors"指令) HTTP标头及页面的响应。这防止了在使用帧或iframe HTML标记时页面内容被其他站点渲染。
 * @author hxjr_baiyongliang
 * @date 2019年5月22日17:55:43
 *
 */
public class XFrameOptionsHeaderFilter implements Filter {
	String address = "*";//默认的访问地址,目前没有限制地址,* 代替
    public XFrameOptionsHeaderFilter() {
    }

    public void init(FilterConfig config) throws ServletException {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        //必须
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        //实际设置
        /*X-Frame-Options 响应头有三个可选的值:
        DENY:页面不能被嵌入到任何iframe或frame中;
        SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中;
        ALLOW-FROM:页面允许frame或frame加载。*/
        response.setHeader("x-frame-options", "SAMEORIGIN"); //只允许嵌入本网站页面
        response.setHeader("Content-Security-Policy", "default-src https: http: 'unsafe-inline' 'unsafe-eval';connect-src https: http:"); //针对safi和chrome
        response.setHeader("Set-Cookie", "cookiename=value;Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly");
        chain.doFilter(req, resp);
    }

    public void destroy() {
    }

}

web.xml 加入

<!-- 配置Filter -->
<filter>
	<filter-name>XFrameOptionsHeaderFilter</filter-name>
	<filter-class>com.fh.filter.XFrameOptionsHeaderFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>XFrameOptionsHeaderFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

设置完成 

另外:Web 安全之内容安全策略(Content-Security-Policy,CSP)配置问题;详见: https://blog.csdn.net/qq_25623257/article/details/90473859

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值