inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

강의 하나로 끝내는 백엔드 모든 지식!

해커로부터 내 서비스 지키기! 웹 보안 기초 (SQL 인젝션, XSS, CSRF)

13강 보안 기초 - CSRF 검증 방식 추가 질문 입니다.

53

흔들거북이

작성한 질문수 6

0

안녕하세요. 강의 너무 잘 듣고 있습니다.

 

CSRF 대응 관련하여 CSRF Token을 form hidden으로 처리하는 방식이 대표적인 처리 방법으로 알고 있고, 강의에서도 그렇게 소개 시켜주셨습니다.

 

HTML을 서버측에서 렌더링 할 때에는 언급해주신 프레임워크에서 제공해주는 기능을 활용하면 간단하게 구현이 가능한것으로 알고 있는데,

 

만약 프론트와 백엔드가 분리된 환경에서는 CSRF 토큰을 어떤식으로 검증 및 처리하는게 일반적인가요?

 

당장 생각나는건, 특정 api 요청 전에 반드시 csrf token 발급을 요청하고, 그 발급받은 token을 api요청에 header 쪽에 넣어서 보내서 검증하는 방식인것 같습니다만, 매 api 요청마다 처리해줘야하는 부분이라 다소 불편한 방식인 것 같네요..

docker rest-api dbms/rdbms backend infrastructure

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 흔들거북이님.

CSRF(크로스 사이트 요청 위조) 방어는 웹 애플리케이션 보안에서 중요한 요소입니다. 프론트엔드와 백엔드가 분리된 환경에서 CSRF를 처리하는 일반적인 방법 중 하나는 CSRF 토큰을 사용하는 방식입니다. 흔들거북이님이 언급한 것과 유사하게, CSRF 토큰을 발급받아 API 요청에 포함시키는 방식이 널리 사용됩니다.

일반적인 처리 방식은 다음과 같습니다:

  1. 토큰 발급: 클라이언트가 애플리케이션에 처음 접속할 때, 서버는 CSRF 토큰을 생성하여 클라이언트에게 전달합니다. 이 토큰은 세션 또는 쿠키에 저장될 수 있습니다.

  2. 토큰 저장: 클라이언트 측에서는 로컬 스토리지나 세션 스토리지에 이 토큰을 저장하여 이후 요청 시 사용할 수 있도록 합니다.

  3. 요청 시 토큰 포함: 클라이언트는 API 요청 시 이 CSRF 토큰을 HTTP 헤더에 포함시킵니다. 일반적으로 'X-CSRF-Token' 같은 커스텀 헤더로 사용합니다.

  4. 서버에서 검증: 서버는 수신한 요청의 헤더에 포함된 CSRF 토큰을 검증하여 그 유효성과 매칭 여부를 확인합니다.

이 방법은 보안성을 제공하지만, 언급한 대로 매 요청마다 토큰을 포함해야 하는 불편함이 있습니다. 그러나 최근에는 더 나은 사용성을 제공하기 위해 SameSite 쿠키 옵션을 활용하여 CSRF 방어를 강화하는 방법도 사용됩니다. 이는 브라우저의 설정을 통해 CSRF를 줄이는 방법입니다. 그러나, 모든 상황에서 대체될 수는 없으며, CSRF 방어에 대한 이해와 적절한 조합이 필요합니다.

강의에서 제공한 개념을 바탕으로, 추가적인 보호 방법을 검토하는 것도 권장 드립니다. 백엔드 보안 기초에 대한 강좌에서 제공하는 자료에서도 보안 기법에 대한 응용과 토의가 가능하니 참고해 보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

15강 12-3) 값 제출후 mysql 저장이 안됩니다.

0

10

2

드랍 테이블로 지운 ordes에 대해서 질문

0

20

1

4. Container 빌드 & 저장하기 - 자료 관련

1

18

2

Nat Gateway

0

21

2

aws 로드 밸런서가 생성되지 않습니다.

0

20

2

문제 풀이 1번 질문

0

28

1

민구님 설치시 또 막혀서 질문드려요

0

31

2

코드 질문

0

25

1

git clone 명령어를 어디 터미널에다 붙여넣어야 하나요?

0

33

2

html 파일을 못 불러 옵니다.

0

32

2

twitterdb 연결이 안돼요

1

27

2

데이터베이스 13번 문제

0

42

2

아주 작은 정오표 전달드립니다.

0

52

2

AWS 프리티어에서 RDS 인스턴스 유형을 선택할 수 없음

0

43

2

call stack 표현이 잘못표현된것이 아닌가요?

0

64

2

추천해주신 책에 대해 문의드립니다.

0

28

2

mysql워크벤치를 실행할때마다 오류가 뜹니다. 해결 방법좀 가르켜주세요.

0

44

1

온톨로지 구축

0

27

1

실제로 작은 기업에서 기획 롤

1

26

1

백엔드 신입으로써 알아야할 보안에 대한 기본 수준이 궁금합니다

0

144

2

22강 마지막 영상 짤림

0

64

2

PDF로 내보내기 기능 활성화 부탁드립니다.

0

217

3

강의 자료 PDF 제공 가능 여부 문의

1

153

2

강의 자료 어디서 받을 수 있나요?

1

232

1