过滤器过滤Referer信息

JAVA代码

package com.umcservice.filter;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * @description 拦截csrf攻击
 * @version
 */
public class CSRFInterceptor extends HandlerInterceptorAdapter {
    private static final String URL_PROTO_HTTP="http://";
    private static final String URL_PROTO_HTTPS="https://";
    private static final String HOME_PAGE = "http://0.0.0.0:8808/index.html";
    private static final String HOME_PAGE2 = "http://0.0.0.0:8808/index.html";
//    private static final String HOME_PAGE2 = "http://maap.wo.cn:8808/index.html";
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response, Object handler) throws Exception {
        String referer = request.getHeader("Referer");
        if(StringUtils.isNotBlank(referer)){
            if(referer.startsWith(URL_PROTO_HTTP)){
                referer = referer.replace(URL_PROTO_HTTP, "");
            }else if(referer.startsWith(URL_PROTO_HTTPS)){
                referer = referer.replace(URL_PROTO_HTTPS, "");
            }
            int i = referer.indexOf("/");
            if(i > 0){
                referer = referer.substring(0,i);
                if(referer.indexOf(":") > 0){
                    referer= referer.substring(0, referer.indexOf(":"));
                }
            }
            String serName = request.getServerName();
            if(!referer.contains(serName)){ //不同域请求 视为非法
                response.sendRedirect(HOME_PAGE2);
                return false;
            }else{
                return true;
            }
        }else{
//            String url = request.getRequestURL().toString();
//            if(url.contains("172.27.114.28") || url.contains("111.202.93.185") || url.contains("getmobilefile.do")){
//                return  true;
//            }
//            System.out.println("----url------"+url);
//            if(!url.startsWith(HOME_PAGE) && !url.startsWith(HOME_PAGE2)){
//                System.out.println("准备重定向");
//                response.sendRedirect(HOME_PAGE2);
//                return false;
//            }
            return true;
        }
    }


}

配置spring-mvc.xml

	<mvc:interceptors>
		<bean class="com.umcservice.filter.CSRFInterceptor" />
	</mvc:interceptors>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值