Web

[Web] CSRF & XSS

차가운개발 2024. 11. 28. 15:46

 

XSS가 사용자가 특정 사이트를 신뢰하기 때문에 발생하는 문제라면 CSRF는 특정 사이트가 사용자를 신뢰하기 때문에 발생하는 문제다.

 

XSS : 크로스 사이트 스크립트

악의적인 스크립트를 웹 페이지에 삽입하여 사용자의 브라우저에서 실행되도록 하는 공격

 

웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 발생하며 결과로 사용자는 의도치 않은 동작을 수행하거나 쿠키, 세션 등의 정보를 탈취 당한다

 

동작 방식

  1. 공격자가 웹 애플리케이션에 악성 스크립트를 삽입
  2. 사용자가 해당 웹 페이지를 열면 스크립트가 사용자의 브라우저에서 실행
  3. 스크립트를 통해 쿠키, 세션, 로컬 데이터 등을 탈취하거나 악성 동작 수행

대응 방법

  • 입력값 검증 및 필터링
    사용자 입력값에서 스크립트 관련 문자를 필터링
  • 출력 시 이스케이프 처리
    출력시 HTML, JavaScript, URL에 안전한 형식으로 이스케이프
  • Content Security Policy(CSP) 적용
    외부 스크립트 실행을 제한
  • HTTP Only 쿠키 사용
    JavaScript에서 쿠키 접근을 막아 쿠키 탈취 방지
  • 신뢰할 수 없는 데이터 직접 삽입 금지
    HTML, JavaScript, 속성 값에 사용자 입력값을 직접 삽입하지 않도록 주의

 

CSRF : 크로스 사이트 요청 변조

사용자가 자신의 의지와는 무관하게 침입자가 의도한 행위를 서버에 요청하게 만드는 공격

 

공격자가 사용자의 인증 정보를 이용해 피해자의 의지와 상관없이 웹 애플리케이션에서 권한이 필요한 작업을 수행하게 만든다

 

계좌이체, 비밀번호 변경, 데이터 삭제 등 의도치 않은 작업이 수행된다

 

동작방식

  1. 사용자가 특정 사이트에 로그인하여 세션이 활성된 상태
  2. 공격자가 악의적인 링크나 스크립트를 포함한 페이지를 사용자가 방문하도록 유도
  3. 사용자가 페이지를 열면 사용자의 인증 쿠키를 이용해 사이트에 요청을 보냄
  4. 사이트는 요청이 정당한 사용자의 요청으로 보아 처리

대응 방법

  • CSRF 토큰 사용
    요청마다 고유한 CSRF 토큰을 생성하여 요청과 함께 검증
  • Referer 헤더 검사
    요청의 출처가 신뢰할 수 있는 도메인인지 확인
  • SameSite 쿠키 설정
    쿠키가 동일 출처 요청에서만 전송되도록 설정
  • 인증된 작업에 대해 재확인
    민감한 작업은 비밀번호 재입력 또는 추가 인증 요구

 

특징 CSRF XSS
공격 대상 서버 (사용자의 권한을 악용) 클라이언트(사용자의 브라우저에서 악성스크립트 실행)
주요 목표 사용자의 권한으로 서버 요청 조작 사용자의 데이터 탈취 또는 악성코드 실행
공격 방식 사용자를 속여 악성 요청 전송 웹 페이지에 악성 스크립트 삽입
피해 범위 서버의 리소스나 데이터 손상 사용자 세션, 데이터 탈취 및 악성 동작 수행
방어 기법 CSRF 토큰, SameSite 쿠기, Referer 검사 입력값 필터링, CSP, HTTP Only 쿠키