Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- java
- Docker
- contatiner
- Thread
- 제네릭스
- 시작하세요 도커 & 쿠버네티스
- 리스트
- 컨테이너
- 자바
- LIST
- 스레드 제어와 생명 주기
- Collection
- 시작하세요! 도커 & 쿠버네티스
- 스레드
- 알고리즘
- 중급자바
- 도커 엔진
- container
- 멀티 쓰레드
- 인프런
- 김영한
- 실전 자바 중급 2편
- 오케스트레이션
- 자료구조
- Kubernetes
- 동시성
- 도커
- 쿠버네티스
- 실전 자바 고급 1편
- 쓰레드
Archives
- Today
- Total
쌩로그
사이트 간 요청 위조 - CSRF, CsrfFilter 본문
반응형
나는 어차피 잘 될 사람이다.
어차피 잘 될 것이고, 지금도 잘 되고있고, 과거도 잘 되어왔기에,,,
목차
- 포스팅 개요
- 본론
2-1. CSRF란
2-2. CSRF 흐름
2-3. CSRF 방지방법
2-4. 스프링 시큐리티에서 Csrf필터 - 요약
- 끝
해당 메서드에 대한 설명은 내 깃헙레포에 있다.
해당 내용은 인프런의 정수원님 강의에서 기반한 내용이다.
1. 포스팅 개요
ㄹㅇ 제곧내이다.
CSRF가 무엇인지, 어떤 흐름인지에 대한 내용이다.
그리고 스프링 시큐리티는 이걸 어떻게 방지하게 해주는가, 클라이언트는 어떻게 대처해야하는가 에 대한 내용이다.
바로 본론으로 가자.
2. 본론
2-1. CSRF란
사용자의 의도와는 무관하게 공격자가 의도한 방식대로 사용자가 서버로 요청을 하고, 받는 공격기법을 사이트 간 요청 위조(Cross Site Request Forgery : CSRF)
라고한다.
2-2. CSRF 흐름

사용자, 공격자 , 사용자가 이용하는 쇼핑몰이 있다고 가정한다.
- 사용자가 이용하는 쇼핑몰로 로그인을 한 후, 쿠키를 발급받는다.
- 공격자가 공격용 링크를 사용자에게 전달한다.
- 사용자가 링크를 클릭하여 공격용 웹페이지에 접속한다.
// 해당링크에는 이미지태그가 있는데, 이미지의 src(주소)에 공격자의 주소가 파라미터로 설정되어있다. - 공격자의 요청이 쇼핑몰로 전달되는데, 쇼핑몰은 사용자에게서 온 요청으로 받아들이게 된다.
- 쇼핑몰은 4번의 요청에서 자신이 발급한 쿠키가 있는지 없는지 확인하는데, 당연히 사용자의 브라우저로 요청을 하기때문에, 정상적으로 요청을 받아들이고 응답한다.
2-3. CSRF 방지방법
스프링 시큐리티는 CSRF를 방지하기 위해서 CsrfFilter
를 제공한다.
CsrfFilter
- 모든 요청에 랜덤하게 토큰을 생성하고, 생성된 토큰을 HTTP파라미터로 요구한다.
- 요청시 전달되는 토큰 값과 서버에 저장된 실제 값과 비교한 후 일치하지 않으면 요청은 실패처리한다.
서버가 csrf토큰을 발급할 때, 클라이언트쪽에서는 form태그
에서 hidden으로 서버에서 발급한 csrf토큰명
과 토큰 값을 설정할 수 있다.
// <input type="hidden" name="${csrf.parameterName}" value="${_csrf.token}" />
서버에 접근시
// HTTP 메소드의 PATCH, POST, PUT, DELETE 메서드를 사용할 때 이 토큰을 필요로 한다.
// 참고 : 단순히 페이지를 불러오는 하는 get 요청은 csrf 를 패스한다.
2-4. 스프링 시큐리티에서 Csrf필터
Spring Security의 Configure메서드에서는 다음과 같이 설정가능하다.
http.csrf() // 기본 활성화되어있음
http.csrf().disabled() // 비활성화도 가능하다.
3. 요약
- CSRF는 공격자가 심어놓은 링크를 통해서 사용자가 공격자의 의도한 방식대로 서버에 접근하여 공격자가 사용자의 정보를 가지고 서버에 접근하는 공격기법이다.
- 스프링 시큐리티에서는 이를 방지할 수 있는
CsrfFilter
를 제공한다. - 우리는 스프링 시큐리티에서 구현해놓은 것으로
CSRF
공격을 막을 수가 있다.
4. 끝
끝
728x90
'Spring Project > Spring Security' 카테고리의 다른 글
Controller의 메서드 중 매개변수로 Principal을 쓸 수 있는 이유 (0) | 2023.06.20 |
---|---|
스프링 시큐리티 OAuth2.0 property 메타 정보(feat. 포스팅 바로가기) (0) | 2023.06.05 |
예외 처리 및 요청 캐시 필터 (0) | 2023.05.17 |
인가 API - 권한 설정 및 표현식 (0) | 2023.05.17 |
세션 제어 필터 (1) | 2023.05.17 |
Comments