728x90
개요
CSRF(크로스 사이트 요청 위조, Cross-Site Request Forgery)는 웹 애플리케이션의 취약점을 이용해 사용자가 의도하지 않은 요청을 실행하게 하는 공격 방식입니다. 사용자가 신뢰하는 웹 사이트에 인증된 상태에서 공격자가 악의적인 요청을 하도록 유도해 사용자의 권한으로 특정 작업을 실행시키는 것이 핵심입니다.
CSRF 공격 예시
- 사용자가 A 사이트에 로그인하고 세션을 유지한 채로 웹 브라우저를 사용 중입니다.
- 공격자는 사용자를 속여서 악성 코드가 포함된 B 사이트로 이동하게 합니다.
- B 사이트는 사용자가 A 사이트에서 인증된 상태임을 이용해, 사용자 몰래 A 사이트로 악의적인 요청을 보냅니다. 예를 들어, 사용자의 권한으로 계좌이체, 비밀번호 변경 등 중요한 작업을 수행할 수 있습니다.
- A 사이트는 요청이 사용자의 세션을 통해 들어온 것이므로 이를 신뢰하고 요청을 처리하게 됩니다.
CSRF 방어 방법
CSRF 공격을 방지하기 위해 웹 애플리케이션에서는 다양한 방법을 사용할 수 있습니다:
- CSRF 토큰 사용: 각 요청에 대해 서버가 난수로 생성된 토큰을 포함하도록 하여 요청의 정당성을 확인합니다. 토큰이 없거나 일치하지 않으면 요청을 거부합니다.
- Referer 검증: 요청의
Referer헤더를 검토하여 요청이 올바른 출처에서 발생했는지 확인합니다. 다만, 이 방법은 모든 경우에 완벽하지 않을 수 있습니다. - SameSite 쿠키 속성 설정: 쿠키에
SameSite속성을 설정하여 같은 도메인에서만 쿠키가 전송되도록 합니다. 이를 통해 외부 사이트에서의 요청이 차단됩니다.
요약
- CSRF는 사용자가 의도하지 않은 요청을 실행하게 만드는 웹 보안 취약점입니다.
- 공격자는 사용자가 인증된 상태에서 악의적인 요청을 서버로 전송하게 만듭니다.
- 방어 방법으로는 CSRF 토큰 사용, Referer 검증, SameSite 쿠키 설정 등이 있습니다.
'기타' 카테고리의 다른 글
| WAS(Web Application Server)와 Web Server 특징 (0) | 2024.11.07 |
|---|---|
| 크로스사이트 스크립트(XSS) 이란 (0) | 2024.10.31 |
| CSR과 SSR의 개념과 차이점 (0) | 2024.06.20 |
| SPA와 MPA의 개념과 차이점 (0) | 2024.06.20 |
| 브라우저 라우터와 해시 라우터 비교 (0) | 2024.06.20 |