2024. 10. 11. 22:32ㆍ모니터링
2024/10/10
※ CSRF에 대해 알아보자.
▶ CSRF(Cross-Site Request Forgery)란❓
웹 애플리케이션의 취약점을 이용해 사용자가 의도하지 않은 요청을 보내도록 하는 공격 기법이다. 공격자는 사용자가 인증된 상태를 악용하여 사용자가 원하지 않는 행동을 수행하게 만든다. 예를 들어, 사용자가 로그인된 상태에서 악의적인 웹사이트를 방문하면, 그 웹사이트가 사용자의 권한을 이용해 은행 계좌에서 돈을 송금하도록 할 수 있다.
▶ CSRF 상황
1️⃣ 사용자가 로그인: 사용자가 웹 애플리케이션에 로그인한다.
2️⃣ 세션 유지: 로그인 후 세션 쿠키가 브라우저에 저장된다.
3️⃣ 악성 웹사이트 방문: 사용자가 다른 웹사이트를 방문한다. 이 웹사이트는 CSRF 공격 코드를 포함하고 있다.
4️⃣ 악의적인 요청 전송: 악성 웹사이트는 사용자의 세션 쿠키를 이용해 원본 웹 애플리케이션으로 요청을 보낸다.
5️⃣ 서버 처리: 서버는 요청을 정상적인 사용자의 요청으로 인식하고 처리한다.
▶ 공격 예시
● 공격자 웹페이지 코드
<!DOCTYPE html>
<html>
<body>
<h1>Free Gift</h1>
<img src="http://bank.com/transfer?amount=1000&to=attacker" style="display:none;" />
</body>
</html>
● 이 예시에서 사용자가 이 페이지를 방문하면, 이미지 태그를 통해
http://bank.com/transfer?amount=1000&to=attacker 요청이 자동으로 실행된다.
● 사용자가 이미 bank.com에 로그인되어 있다면, 이 요청은 인증된 상태로 처리된다.
▶ 방지 방법
✅ Referer 헤더 검증
● 서버는 요청의 Referer 헤더를 확인하여 요청이 신뢰할 수 있는 출처에서 온 것인지 확인할 수 있다.
● 그러나, Referer 헤더는 사용자가 조작할 수 있고, 일부 브라우저에서는 이 헤더를 포함하지 않을 수 있다.
✅ CSRF 토큰 사용
● 가장 일반적인 방지 방법은 CSRF 토큰을 사용하는 것이다.
● 서버는 각 요청에 대해 고유한 토큰을 생성하고, 이를 폼에 포함시킨다.
● 서버는 요청이 들어올 때 이 토큰을 검증한다.
✅ form 대신 API사용
● API를 통해 JSON데이터로 통신한다면 해당 이슈를 피할 수 있다.
'모니터링' 카테고리의 다른 글
시큐어 코딩 - XSS (2) | 2024.10.11 |
---|---|
시큐어 코딩 - CORS (0) | 2024.10.09 |
애플리케이션 로그 모니터 (2) | 2024.10.07 |
모니터링 - Prometheus와 Grafana (0) | 2024.10.04 |
모니터링 시스템 (2) | 2024.10.02 |