CSRF 공격 방어 --- 검증 HTTP Refer

HTTP Refer 는 header 의 일부로, 브 라 우 저가 웹 서버 에 요청 을 보 낼 때 Refer 를 가 져 와 Refer 를 검증 함으로써 요청 의 적법 성 을 판단 할 수 있 으 며, Refer 가 다른 사이트 라면 CSRF 공격 일 수 있 으 므 로 이 를 거부 합 니 다.
/**
 * @author Cheng.Wei
 * @ClassName ReferrerInterceptor
 * @Description CSRF    
 * @date 2017-08-04 14:11
 */
public class ReferrerInterceptor implements HandlerInterceptor {
    static final Logger logger = LogManager.getLogger(ReferrerInterceptor.class);
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String referrer = request.getHeader("referer");
        logger.debug("referrer:{}",referrer);
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(request.getScheme()).append("://").append(request.getServerName());
        logger.debug("basePath:{}",stringBuffer);
        if(referrer==null||referrer.equals("")||referrer.lastIndexOf(String.valueOf(stringBuffer))==0){
            return true;
        }
        else{
            return false;
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

좋은 웹페이지 즐겨찾기