首页

通过过滤器UnknownRefererSecurityFilter实现开放接口白名单授权访问,防止内容被盗爬

标签:filter,java,过滤器,黑名单,安全,策略,盗链,反抓取,爬取,header,配置     发布时间:2016-08-24   

一、前言

最近发现网站内容存在直接通过开放接口被抓取的的安全隐患,于是写了个安全过滤器UnknownRefererSecurityFilter实现允许白名单访问域接入到本站直接获取内容,之前也写过防止相关页面盗链的文章可以参考,该功能现在上线,测试效果如下图所示

通过过滤器UnknownRefererSecurityFilter实现开放接口白名单授权访问,防止内容被盗爬

二、代码示例

1. UnknownRefererSecurityFilter类内容如下所示

package com.xwood.search.security;@b@@b@import java.io.IOException;@b@import java.io.PrintWriter;@b@import javax.servlet.Filter;@b@import javax.servlet.FilterChain;@b@import javax.servlet.FilterConfig;@b@import javax.servlet.ServletException;@b@import javax.servlet.ServletRequest;@b@import javax.servlet.ServletResponse;@b@import javax.servlet.http.HttpServletRequest;@b@import javax.servlet.http.HttpServletResponse;@b@@b@public class UnknownRefererSecurityFilter implements Filter {@b@    @b@    /**白名单配置单*/@b@    private static final String[] whiteLists={"xwood.net","139.196.30.182"}; @b@@b@    @Override@b@    public void init(FilterConfig filterConfig) throws ServletException {@b@        // TODO Auto-generated method stub @b@    }@b@    @b@    private boolean filterHeaderByWhileLists(HttpServletRequest hreq,String s_index){@b@        if(hreq.getHeader("Referer").indexOf(s_index)!=-1)@b@            return true;@b@        return false;@b@    }@b@    @b@    /**@b@     * 过滤白名单@b@     * @param hreq@b@     * @return@b@     */@b@    private boolean filterHeaderRefer(HttpServletRequest hreq){@b@        if(null==hreq.getHeader("Referer")){@b@            return false;@b@        }@b@        for(String s:whiteLists){@b@            if(filterHeaderByWhileLists(hreq,s))@b@                return true;@b@        }@b@        return false;@b@    }@b@@b@    @SuppressWarnings("unused")@b@    @Override@b@    public void doFilter(ServletRequest request, ServletResponse response,@b@            FilterChain chain) throws IOException, ServletException {@b@        // TODO Auto-generated method stub@b@        HttpServletRequest hreq = (HttpServletRequest) request;@b@        HttpServletResponse hres = (HttpServletResponse) response;@b@        boolean isAllowed=filterHeaderRefer(hreq); //防止非白名单通过搜索抓取本站内容@b@        if (isAllowed) {@b@            chain.doFilter(request, response);@b@        } else { @b@            PrintWriter out = hres.getWriter();@b@            out.println("Illegal access!!!");    @b@        }@b@    }@b@@b@    @Override@b@    public void destroy() {@b@    }@b@@b@}

2. 配置过滤器

    <filter>@b@        <filter-name>unknownRefererSecurityFilter</filter-name>@b@        <filter-class>com.xwood.search.security.UnknownRefererSecurityFilter</filter-class>@b@    </filter>@b@    <filter-mapping>@b@        <filter-name>unknownRefererSecurityFilter</filter-name>@b@        <url-pattern>/*</url-pattern>@b@    </filter-mapping>
<<推荐下载>>
  • (1) 阿里巴巴Java开发手册8种不同版本
  • (2) Web前端开发视频教程
  • (3) 30+明星讲师PPT课件分享一线大厂架构实战经验
  • (4) java开发_架构篇_视频资源分享_v2208
  • (5) java开发_高级篇_视频资源分享_v2208
  • (6) java开发_进阶篇(中级)_视频资源分享_v2208
  • (7) java开发_入门篇_视频资源分享_v2208
  • (8) 微信小程序开发视频1+167源码+实战demo等下载
  • (9) easy-shopping电子商务java源码(附脚本和安装文档说明)下载
  • (10) java常用的72份知名实用的电子书下载
  • (11) java开发性能优化资料整理大全(8份电子文档+3份实战优化)下载
  • (12) 9个常用的算法设计资料和100以上视频课件内容下载
  • (13) vue开发必备常用手册16件下载
  • (14) 21种不同技术集群方案(es、flink、redis、nginx、zk、lvs、kafka、mysql、k8s等)参考资料下载
  • (15) 20种技术代码规范(js/java/dba/阿里/华为/oracle/mysql等)参考资料下载
  • (16) 微服务五套资料(0-1,架构设计,springcloud,nacos等)下载
  • (17) 架构师(28知识图谱+3套简历模板+6套架构实战文档等)完整资料整理下载
  • (18) 大数据18套实战基础知识+8套简历模板下载
  • (19) 并发编程全套(7套+阿里巴巴+亿级实战等)实战资料下载
  • (20) Kafka九套学习整理知识点全套(面试+笔记+代码api+命令+容备等)资料下载
  • (21) java全套9个不同方向类型的面试题(基础+核心+大厂+架构师+近万套题库等)下载
  • (22) JAVA开发常用API帮助文档大全(超52种以上技术资料,高手必备)下载
  • (23) springcloud超详细139件全套学习实战资料( 视频课件+源码demo+文档资料等)下载
  • 更多推荐>>
  • <<热门文章>>