코딩마을방범대
CSRF 이란? 본문
728x90
CSRF(Cross-site request forgery) 공격이란
- 사이트 간 요청 위조
- 권한을 가진 유저가 스스로 시스템에 있는 정보를 탈취하거나 망가뜨리도록 조종하는 것
CSRF방어의 핵심은 XSS차단 + 비정상적인 루트를 통한 CUD를 막는데 있음
CSRF의 방어 방법
1. MAKE TOKEN & CHECK
- 로그인시 auth token 값을 생성(세션에 보관)
- 화면 단에선 해당 토큰을 빼내어 hidden값에 넣어 놓음
- submit 처리시 세션에 있는 값과 비교
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;
}
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");
}
참고사이트
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 |