【软件上线常见漏洞】检测到目标URL存在http host头攻击漏洞

程序猿学社的GitHub,欢迎Star
github技术专题
本文已记录到github

文章目录

  • 前言
  • 解决思路
  • 代码
    • pom.xml
    • 过滤器
    • 启动类

前言

最近花了几天用ffmpeg帮某公司做了一个视频合成的小demo,因客户公司对安全很重视,昨天接到中危报告,第一时间,进行修复。
【软件上线常见漏洞】检测到目标URL存在http host头攻击漏洞_第1张图片

解决思路

设置一个过滤器,对请求过的url进行验证,也就是所谓的白名单验证,只有可信任的名单发过来的请求才处理。
场景:

  • 很早的webservice服务
  • 对外的接口,会分配系统id和秘钥,再MD5加密
  • 网络通信过程中,会根据设备id进行过滤,不可信任的设备会进行排除

代码

pom.xml

    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.3.1.RELEASEversion>
        <relativePath/> 
    parent>

<dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
dependency>

  • 引入springboot一些依赖包

过滤器

package com.cloudtech.partyvideo.config;

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


@WebFilter(filterName="HttpHostFilter",urlPatterns="/*")
public class HttpHostFilter extends HttpServlet implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        // 头攻击检测  过滤主机名
        String requestHost = request.getHeader("host");
        if (requestHost != null && !checkBlankList(requestHost)) {
            response.setStatus(403);
            return;
        }
        filterChain.doFilter(request, response);
    }

    //判断主机是否存在白名单中
    private boolean checkBlankList(String host){
        if(host.contains("10.153.96.107") || host.contains("192.168.117.27") ){//此处为自己网站的主机地址
            return true;
        }
        return false;
    }
}
@WebFilter(filterName="HttpHostFilter",urlPatterns="/*")
  • WebFilter标识使用过滤器
  • filterName过滤器的名称
  • /* 表示所有的请求都会经过该过滤器处理后,才会继续向下运行

启动类

【软件上线常见漏洞】检测到目标URL存在http host头攻击漏洞_第2张图片

  • 注意在springboot启动入口类上增加ServletComponentScan注解,不然,不生效。

社长正在梳理软件上线过程中,常见漏洞对应的解决方法。
软件上线常见漏洞

作者:程序猿学社
原创公众号:『程序猿学社』,专注于java技术栈,分享java各个技术系列专题,以及各个技术点的面试题。
原创不易,转载请注明来源(注明:来源于公众号:程序猿学社, 作者:程序猿学社)。

你可能感兴趣的:(【软件上线常见漏洞】检测到目标URL存在http host头攻击漏洞)