CSRF 공격이란?
- 웹 어플리케이션 취약점 중 하나로 인터넷 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 만드는 공격
XSS 공격과 차이점 🧐
XSS와 CSRF는 둘 다 스크립트 공격이다. XSS는 사용자(희생자)의 PC에서 스크립트가 실행되지만, CSRF는 서버에서 스크립트가 실행된다.
CSRF 공격 방법
-
공격자가 이메일이나 게시판에 CSRF 스크립트가 포함된 게시물을 전송한다.
예) img 태그(get 방식)나 form 태그(post 방식)에 공격자의 의도가 담긴 Parameter를 담아 공격할 서버에 전송하도록한다.
-
사용자가 공격자가 등록한 CSRF 스크립트가 포함된 게시물을 확인한다.
-
사용자가 CSRF 스크립트가 포함된 게시물을 열람하면, 공격자가 원하는 CSRF 스크립트 요청이 발생한다.
-
공격자가 원하는 CSRF 스크립트가 실행되어, 관리자 및 사용자의 피해가 발생
img 태그와 link 태그는 CORS가 적용되는 대표적 태그다.
CSRF 방어 기법
- Referer 체크
- HTTP 헤더에 있는 Referer로 해당 요청이 요청된 페이지의 정보를 확인한다.
- GET / POST 요청 구분
- img 태그 등의 경우 GET 요청으로, form 태그로 값을 받을 경우 POST를 이용하여 요청을 구분해준다.
- Token 사용
- 서버에서 hash로 암호화 된 token을 발급, 사용자는 매 요청마다 token을 함께 보내어 서버의 검증을 거쳐야한다.
- 추가 인증 수단 사용 ( ex. CAPCHA )
- 추가 인증 수단을 거쳐 만약 테스트를 통과하지 못할 시, 해당 요청 자체를 거부한다.
출처
CSRF 공격과 방어 기법
XSS와 CSRF 차이점 설명과 사용자가 공격 예방하는 방법