CSRF방어의 핵심은 XSS차단 + 비정상적인 루트를 통한 CUD를 막는데 있음
session.setAttribute("CSRF_TOKEN",UUID.randomUUID().toString());
<input type="hidden" name="_csrf" value="${CSRF_TOKEN}"/>
/ 파라미터로 전달된 csrf 토큰 값
String param = request.getParameter("_csrf"); // 세션에 저장된 토큰 값과 일치 여부 검증
if (request.getSession().getAttribute("CSRF_TOKEN").equals(param)) {
return true;
} else {
response.sendRedirect("/"); return false;
}
String referer = request.getHeader("REFERER");
if(referer != null && referer.length() > 0){
out.println("referer : " + referer);
}else{
out.println("You can not enter");
}