📗 self-study/📗 inflearn

[웹 해킹 & 시큐어 코딩] 06. CSRF

천재강쥐 2023. 12. 6. 03:00

 

 

🔥 웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩

 

위아래 1줄씩 띄우고 중요한 부분은 볼드 효과

 

 

 

 

📍 CSRF란 무엇인가?

👉🏻 Cross-Site Request Forgery: 사이트간의 요청 위조

👉🏻 공격자는 스크립트를 사용하여 사용자가 의도하지 않은 요청을 전달함 (ex: 사용자 정보 수정, 탈퇴, 작성, ...)

 

 

 

📍 공격 원리 분석

공격자의 (패스워드 변경 스크립트가 등록된) 게시글 등록
> DB에 스크립트 저장
> 사용자의 게시글 조회
> DB 스크립트 조회
> 스크립트가 실행되며 패스워드 변경

👉🏻 사용자 공격

 

공격자가 (A사이트에 광고를 게시하는) 스크립트가 담긴 게시글 작성
> DB에 스크립트 저장
> 사용자의 게시글 조회
> DB 스크립트 조회
> 스크립트 실행되며 사용자의 계정으로 A사이트에 광고 게시물 등록

👉🏻 사용자 이용하여 공격자가 원하는 기능 실행

 

 

 

 

📍 XSS VS CSRF

👉🏻 CSRF는 사이트를 이동하는 경우도 있고 이동하지 않는 경우도 있음

👉🏻 XSS는 공격자의 서버로 요청을 하고 공격자 서버에서 사용자에게 비정상 응답값을 보냄! 즉, 공격 대상이 사용자임

 

👉🏻 CSRF는 정상적인 웹 사이트에 비정상적 요청을 보냄! 즉, 공격 대상이 서버임

 

 

 

📍 대응 방안

👉🏻 Refer 값 검증: 요청값을 보내는 사이트를 확인하는 등

👉🏻 CSRF TOKEN 사용: FORM의 토큰값(어플리케이션단, 접속 시마다 토큰값을 다르게 함)과 Action의 토큰값(자바단)을 비교함

       공격자의 공격으로 들어온 값의 경우, form 페이지에 접속하지 않기 때문에 어플리케이션단의 토큰값 자체가 존재하지 않게 됨

 

👉🏻 인증 로직 사용 / CAPCHA 사용: 캡차의 경우 게시글을 작성할 때 많이 사용함

👉🏻  SameSite Cookie: A사이트의 쿠키를 B사이트에서는 사용할 수 없게 함

 

 

 

📍 CSRF Token 동작 상세 원리

폼 페이지(Form Page)				액션 페이지(Action Page)
			---> Token 전달
<Token1>			     		  <Token 검증>

👉🏻 폼 페이지에서 작성한 토큰을 액션 페이지로 전송하게 되는데,
사용자가 폼 페이지에 접근하지 않고 공격자의 공격으로 액션 페이지에 접근하게 된다면
액션 페이지에서 토큰을 검증할 때 토큰이 일치하지 않으므로(토큰이 없으므로) 공격할 수 없게 됨