AppScan 보안 문제 해결 실 록 - 크로스 사이트 위조 요청

2603 단어 안전 공격
문제 해석
크로스 오 버 공격 요청 은 쉽게 말 하면 공격 자가 일부 기술 수단 을 통 해 사용 자 를 속 이 는 브 라 우 저 를 통 해 자신 이 인증 한 사 이 트 를 방문 하고 일부 조작 (예 를 들 어 메 일 을 보 내 고 메 시 지 를 보 내 며 심지어 재산 조작, 예 를 들 어 이체 와 상품 구 매) 을 실행 하 는 것 이다.
장면: 1 포럼 에서 제출 한 링크 2 낚시 사이트
예: 만약 에 한 은행 이 이체 작업 을 실행 하 는 URL 주 소 를 다음 과 같이 사용한다 면:http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName그러면 악의 적 인 공격 자 는 다른 사이트 에 다음 과 같은 코드 를 설치 할 수 있 습 니 다. < imgsrc = "http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman"> Alice 라 는 계 정 사용자 가 악성 사 이 트 를 방문 한 지 얼마 되 지 않 아 로그 인 정보 가 만 료 되 지 않 았 다 면 1000 원 의 자금 을 손실 할 것 입 니 다.
일반적으로 CSRF 공격 을 방어 하 는 세 가지 방법 이 있 습 니 다. token 을 검증 하고 HTTP 요청 을 검증 하 는 Referer, 그리고 XML HttpRequests 의 사용자 정의 header 를 검증 합 니 다.
해결 방안
필터 설정 refer 비 본 사이트 요청 차단


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 org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
public class CSRFilter implements Filter {
    
    private String[] verifyReferer = null;
    private static Log log = LogFactory.getLog(CSRFilter.class);
    public void destroy() {
        
    }
 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        String referer = ((HttpServletRequest)request).getHeader("Referer"); 
        boolean b = false;
        for(String vReferer : verifyReferer){
            if(referer==null || referer.trim().startsWith(vReferer)){
                b = true;
                chain.doFilter(request, response);
                break;
            }
        }
        if(!b){
            log.error("  CSRF  ,referer:"+referer);
        }
    }
 
    public void init(FilterConfig filterConfig) throws ServletException {
        String referer = filterConfig.getInitParameter("referer");
        this.verifyReferer = referer.split(",");
    }
 
}

웹. xml 설정 필터
	
		csrfFilter
		com.filter.CSRFilter
		
			referer
			localhost
		
	
	
		csrfFilter
		/*
	

좋은 웹페이지 즐겨찾기