CSRF 이란?

단비·2023년 5월 15일
0

학습

목록 보기
46/66

CSRF(Cross-site request forgery) 공격이란

  • 사이트 간 요청 위조
  • 권한을 가진 유저가 스스로 시스템에 있는 정보를 탈취하거나 망가뜨리도록 조종하는 것

CSRF방어의 핵심은 XSS차단 + 비정상적인 루트를 통한 CUD를 막는데 있음



CSRF의 방어 방법

1. MAKE TOKEN & CHECK

  1. 로그인시 auth token 값을 생성(세션에 보관)
session.setAttribute("CSRF_TOKEN",UUID.randomUUID().toString()); 
  1. 화면 단에선 해당 토큰을 빼내어 hidden값에 넣어 놓음
<input type="hidden" name="_csrf" value="${CSRF_TOKEN}"/>
  1. submit 처리시 세션에 있는 값과 비교
/ 파라미터로 전달된 csrf 토큰 값 
String param = request.getParameter("_csrf"); // 세션에 저장된 토큰 값과 일치 여부 검증 
if (request.getSession().getAttribute("CSRF_TOKEN").equals(param)) { 
	return true; 
} else { 
	response.sendRedirect("/"); return false; 
}

2. REFERER

  • 같은 도메인에서 클릭 > 클릭 > 클릭해서 관리자페이지로 들어오는 것은 허용하되,
    도메인이 다른 곳에서 갑자기 들어오는 것은 막는 방법
    (즉, 메일 URL, SNS공유, 커뮤니티에서 퍼트려진 URL 또는 카카오톡 링크든 뭐든 외부링크 접속은 다 막히는 것)
String referer = request.getHeader("REFERER");
if(referer != null && referer.length() > 0){
	out.println("referer : " + referer);
}else{
	out.println("You can not enter");
}





참고사이트

[JAVA, JSP] CSRF 공격이란? 방어 방법? - 팀드모네

profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글