Tomcat 点击劫持:X-Frame-Options Header未配置【已解决】

X-Frame-Options Header未配置

  • 背景
    • 漏洞描述
    • 修复和改进建议
    • 具体解决办法
      • Tomcat
      • Apache
      • Nginx
      • 自定义过滤器
      • 验证

背景

最近就新开发项目进行网络安全监测,检测报告中发现含有点击  劫持:X-Frame-Options Header未配置 (低危)  Web安全漏洞,下面为具体解决方法

漏洞描述

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在

修复和改进建议

给您的网站添加X-Frame-Options响应头,赋值有如下三种:

  1. DENY:无论如何不在框架中显示;
  2. SAMEORIGIN:仅在同源域名下的框架中显示;
  3. ALLOW-FROM uri:仅在指定域名下的框架中显示。

注: 在网页中设置meta标签是无用的!例如, 是没有效果的。不要使用这种方式。需要在下面的配置实例中配置HTTPHeader的方式来进行配置,X-Frame-Options才会起作用。

具体解决办法

Tomcat

在web.xml添加如下配置


    httpHeaderSecurity
    org.apache.catalina.filters.HttpHeaderSecurityFilter
    
        antiClickJackingEnabled
        true
    
    
        antiClickJackingOption
        ALLOW-FROM
    
    
        antiClickJackingUri
        https://baidu.com/
    
    true



    httpHeaderSecurity
    /*
    REQUEST

Apache

Windows平台是在httpd.conf里面添加下面配置;如果是ubuntu是在/etc/apache2/sites-available下面对应的*.conf文件进行配置

配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 ‘site’ 的配置中:

Header always append X-Frame-Options SAMEORIGIN

配置Apache X-Frame-Options deny , 需要把下面这行添加到 ‘site’ 的配置中:

Header set X-Frame-Options DENY

配置Apache X-Frame-Options 设置 ALLOW-FROM 为一个指定的主机,需要把下面这行添加到 ‘site’ 的配置中:

Header set X-Frame-Options "ALLOW-FROM https://example.com/"
配置好后,可能重启Apache2失败,原因是没有安装headers模块
执行命令:# a2enmod headers 即可安装headers模块,安装后可以在/etc/apache2/mods-enabled目录下看到headers模块可用
安装headers模块成功后,再次执行service apache2 restart即可重新启动apache

Nginx

配置 nginx 发送X-Frame-Options响应头,需要把下面这行添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置中:

add_header X-Frame-Options SAMEORIGIN;

自定义过滤器

package filter;
 
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class FrameOptionsfilter implements Filter {
 
 
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
	//必须
        HttpServletRequest request = (HttpServletRequest) req;  
        HttpServletResponse response = (HttpServletResponse) res;  
        //实际设置
	response.setHeader("x-frame-options", "SAMEORIGIN");  
	//调用下一个过滤器(这是过滤器工作原理,不用动)
	chain.doFilter(request, response);
	}  
 
	public void init(FilterConfig config) throws ServletException {
	}
	
	public void destroy() {
	}
	
}

在项目web.xml文件下添加以下内容:

 
  
    FrameFilter  
    filter.FrameTao  
  
  
    FrameFilter  
    /*
  

验证

打开Chrome浏览器访问项目地址
F12检查
Tomcat 点击劫持:X-Frame-Options Header未配置【已解决】_第1张图片

你可能感兴趣的:(web开发)