CSRF (크로스 사이트 요청 위조)는 공격자가 사용자를 속여 원하지 않는 요청을 특정 웹사이트에 보내도록 하는 웹 보안 취약점입니다. 사용자가 이미 로그인된 상태에서 악성 요청이 자동으로 실행되면 공격자가 사용자 권한으로 임의의 작업을 수행할 수 있습니다.
<img src="https://victim.com/transfer?amount=10000&to=hacker" />
<form action="https://victim.com/transfer" method="POST"> <input type="hidden" name="amount" value="10000"> <input type="hidden" name="to" value="hacker"> <input type="submit"> </form> <script>document.forms[0].submit();</script>
csrf_token
을 사용하는 방식):html복사편집<form action="/transfer" method="POST"> <input type="hidden" name="csrf_token" value="abcdef123456"> <input type="text" name="amount"> <input type="submit" value="Transfer"> </form>
SameSite=Strict
또는 SameSite=Lax
설정.SameSite=Strict
: 완전히 다른 도메인에서의 요청은 쿠키가 포함되지 않음.SameSite=Lax
: GET 요청에서는 쿠키를 포함하지 않지만, 사용자 인터랙션이 있는 경우에는 포함됨.Set-Cookie: sessionid=xyz123; Secure; HttpOnly; SameSite=Strict
Access-Control-Allow-Origin
을 신중하게 설정.Access-Control-Allow-Methods
를 필요한 요청만 허용.Referer
또는 Origin
을 확인하여 신뢰할 수 있는 출처에서 온 요청만 처리.Referer
를 비워서 보낼 수도 있음.항목 | CSRF | XSS |
---|---|---|
공격 방식 | 사용자가 원하지 않는 요청을 실행하도록 유도 | 악성 스크립트를 실행하여 데이터를 탈취 |
주 대상 | 사용자의 세션/권한 | 클라이언트 브라우저 |
해결 방법 | CSRF 토큰, SameSite 쿠키 설정 | 입력값 검증, Content Security Policy (CSP) 적용 |
항목 | CSRF (Cross-Site Request Forgery) | XSS (Cross-Site Scripting) |
---|---|---|
공격 방식 | 사용자가 원치 않는 요청을 자동 실행하도록 유도 | 악성 스크립트를 삽입하여 실행 |
공격 목표 | 사용자의 인증된 세션을 악용하여 특정 사이트에서 동작 수행 | 클라이언트(브라우저)에서 악성 스크립트 실행을 유도 |
공격자의 조작 위치 | 공격자가 피해자의 브라우저를 통해 서버로 요청을 전송 | 공격자가 악성 스크립트를 클라이언트(브라우저)에서 실행 |
서버/클라이언트 여부 | 서버 사이드 공격 (사용자의 권한을 악용해 서버에 영향을 줌) | 클라이언트 사이드 공격 (브라우저에서 직접 실행됨) |
요구되는 전제 조건 | 피해자가 로그인된 상태여야 하며, 해당 사이트에 대한 유효한 세션 쿠키를 보유 | 로그인 필요 없음, 단순히 웹 페이지 방문만으로 공격 가능 |
공격 성공 시 결과 | – 비밀번호 변경, 계좌이체, 게시글 작성 등 사용자의 권한으로 원하지 않는 요청 실행 – 서버 로그에는 정상적인 사용자의 요청처럼 보임 | – 쿠키 탈취, 세션 하이재킹 – 키로깅, 피싱 페이지 삽입 – DOM 조작 (예: 가짜 로그인 폼 표시) |
공격 예시 | html <img src="https://victim.com/transfer?amount=10000&to=hacker"> | html <script>document.cookie="session=attacker"</script> |
주 대상 | 서버: 사용자의 권한을 악용하여 서버에서 동작 수행 | 클라이언트(브라우저): 사용자의 브라우저에서 직접 코드 실행 |
해결 방법 | – CSRF 토큰 사용 – SameSite 쿠키 설정 – Referer/Origin 검사 – CORS 정책 강화 | – 입력값 검증 및 이스케이프 처리 (< , > , " 등 특수문자 인코딩)– Content Security Policy (CSP) 설정 – HTTPOnly 및 Secure 쿠키 설정 |
공격이 가능한 HTTP 메서드 | 주로 GET, POST, PUT, DELETE 등 모든 요청에 적용 가능 | 주로 GET 요청에서 발생 (사용자가 웹사이트를 방문하는 것만으로 감염될 수 있음) |
대표적인 예방 기술 | CSRF 토큰, SameSite 쿠키, 인증된 API 요청 | XSS 필터링, CSP(Content Security Policy), Input Sanitization |
취약한 환경 | 로그인 기반 웹 애플리케이션 (특히 세션 쿠키를 사용하는 사이트) | 사용자 입력을 필터링하지 않는 모든 웹 애플리케이션 |
👉 CSRF는 세션 기반 인증 시스템에서 특히 위험하므로, 보안 조치를 철저히 해야 합니다! 🔒
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…