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

编程知识 更新时间:2023-04-05 06:48:07

安全监测反馈如下: 

 有时候为了防止网页被别人的网站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/qq_25623257/article/details/90473859

 

更多推荐

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

本文发布于:2023-04-05 06:48:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/21e1e0e1c3e155631816dcdf997331fb.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:过滤器   Security   Content   Policy   Options

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 45365文章数
  • 14阅读数
  • 0评论数