코딩마을방범대

CSRF 이란? 본문

🎃 기타/상식 ❗

CSRF 이란?

신짱구 5세 2023. 5. 28. 15:10
728x90

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

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

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



CSRF의 방어 방법

1. MAKE TOKEN & CHECK

  1. 로그인시 auth token 값을 생성(세션에 보관)
  2. session.setAttribute("CSRF_TOKEN",UUID.randomUUID().toString()); 
  3. 화면 단에선 해당 토큰을 빼내어 hidden값에 넣어 놓음
  4. <input type="hidden" name="_csrf" value="${CSRF_TOKEN}"/>
  5. 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 공격이란? 방어 방법? - 팀드모네

728x90

'🎃 기타 > 상식 ❗' 카테고리의 다른 글

웹서버 Nginx & Apache  (0) 2023.05.28
프록시(Proxy)란  (0) 2023.05.28
JWT - (1) JWT와 쿠키&세션의 기초  (0) 2023.05.27
SSL과 TSL  (0) 2023.05.27
비대칭키를 이용한 인증서 생성 - (2) 인증서에 대하여  (0) 2023.05.27