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는 세션 기반 인증 시스템에서 특히 위험하므로, 보안 조치를 철저히 해야 합니다! 🔒
오늘은 AI 생태계에 혁신적인 변화를 가져올 것으로 예상되는 MCP(Model Context Protocol)에 대해 상세히 알아보겠습니다. 2024년…
1. TPM이란? TPM(Trusted Platform Module)은 국제 표준 기반의 보안 하드웨어 칩으로, 컴퓨터나 디지털 장비 내에서…
시즌2, 기대했는데... 실망도 두 배!두뇌싸움을 기대했는데, 전략도 없는 자기들만의 감정에 따른 편가르기, 정치싸움이 되어 버린…
BPF(Berkeley Packet Filter) 도어는 해커가 관리자 몰래 뒷문을 새로 만든 것입니다.해커가 명령을 내려 특정 데이터들을 뒷문을…
1. IPC의 개념과 목적 1.1 IPC란 무엇인가? IPC (Inter-Process Communication)는 운영체제 내의 서로 독립적인 프로세스…