CSRF 와 XSS 의 차이

XSS(크로스 사이트 스크립팅)와 CSRF(크로스 사이트 요청 위조)는 모두 웹 보안 취약점을 이용하는 공격 방법이지만, 각각의 특성과 목적에는 명확한 차이가 있습니다.

1. 실행 위치의 차이

  • XSS: 사용자의 브라우저 내에서 스크립트가 실행됩니다.
  • CSRF: 서버 측에서 사용자의 요청을 처리하는 과정에서 실행됩니다.

2. 공격 방식의 차이

  • XSS: XSS는 사용자가 특정 웹 사이트를 신뢰하는 것을 이용하여 악성 스크립트를 실행시켜 사용자의 정보를 탈취하거나 조작하는 공격입니다. 이 공격은 사용자의 브라우저에서 직접 실행되며, 웹사이트의 취약점을 통해 입력 데이터를 필터링 없이 처리할 때 발생합니다.
  • CSRF: CSRF는 이미 인증된 사용자의 권한을 이용해 공격자가 원하는 행동을 서버에 요청하도록 하는 공격입니다. 사용자는 자신도 모르는 사이에 공격자가 준비한 악의적인 요청을 실행하게 됩니다. 이 공격은 사용자의 브라우저가 아닌 서버에서 요청을 처리하므로 서버는 이를 정상적인 사용자의 요청으로 착각하고 처리합니다.

3. 목적의 차이

  • XSS: 사용자의 세션 정보나 개인 정보를 탈취하거나, 사용자를 대신하여 악의적인 행동을 수행하게 하는 것을 목적으로 합니다.
  • CSRF: 사용자가 이미 로그인한 상태에서 사용자 몰래 송금, 설정 변경, 계정 정보 수정 등을 포함한 서버에 요청을 보내게 하여 사용자를 대신해 특정 행동을 수행하게 합니다.

4. 예시 :

4-1. XSS 공격의 예

xss 의 예

XSS 공격의 예로는 웹사이트의 댓글 시스템을 이용한 경우를 들 수 있습니다. 예를 들어, 어떤 웹사이트가 사용자의 입력을 제대로 필터링하지 않아 스크립트 코드를 포함한 댓글을 게시할 수 있는 상황을 가정해 보겠습니다. 사용자 A가 댓글에 다음과 같은 스크립트 코드를 입력합니다:

HTML
<script>alert('당신의 쿠키: ' + document.cookie);</script>

이 코드는 다른 사용자가 해당 댓글을 읽을 때 실행되어, 브라우저에서 alert 함수를 통해 사용자의 쿠키 정보를 보여주는 팝업을 생성합니다. 만약 이 스크립트가 쿠키 정보를 외부 서버로 전송하도록 설계되었다면, 사용자의 세션 정보 등 중요한 데이터가 공격자에게 유출될 수 있습니다. 이처럼 XSS는 사이트의 신뢰를 악용하여 사용자의 정보를 탈취하거나 악의적인 행동을 유도합니다.

4-2. csrf 예

csrf 예시

CSRF 공격의 예로는 인터넷 뱅킹 서비스를 이용한 경우를 들 수 있습니다. 사용자 B가 인터넷 뱅킹에 로그인한 상태에서, 공격자가 준비한 송금 요청 링크를 클릭하게 만드는 상황입니다. 공격자는 다음과 같은 방법으로 공격을 준비할 수 있습니다:

  1. 공격자는 이메일이나 소셜 미디어를 통해 송금 링크를 포함한 메시지를 전송합니다. 링크는 다음과 같은 HTML 폼을 사용할 수 있습니다:
    HTML
    <a href="https://bank.com/transfer?amount=1000000&toAccount=1234567890">클릭하시면 경품을 받을 수 있습니다!</a>
  2. 사용자 B가 링크를 클릭하면, 웹 브라우저는 사용자가 로그인한 상태의 인증 정보(쿠키 등)를 사용하여 자동으로 송금 요청을 은행 서버로 전송합니다.
  3. 은행 서버는 이 요청을 정상적인 사용자의 요청으로 인식하고 송금을 진행합니다.

이러한 공격은 사용자가 아무런 의심 없이 링크를 클릭하게 만들어 사용자의 인증된 세션을 악용합니다. CSRF는 사용자가 의도하지 않은 중요한 행위를 실행하게 함으로써 금전적 손실이나 기타 피해를 입힐 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top