보안/웹 보안

[보안] 악성 스크립트와 위조 요청? XSS와 CSRF의 차이와 해결법 - 코드카인 티스토리

CodeCaine Explorer 2024. 12. 8. 19:41
728x90
반응형
SMALL

안녕하세요😊 코드카인 여러분!

오늘은 웹 보안의 두 가지 대표적인 공격 기법인 **XSS(교차 사이트 스크립팅)**와 **CSRF(사이트 간 요청 위조)**에 대해 알아볼 거예요. 마치 집 안에 들어온 도둑과 바깥에서 누군가 당신의 이름을 빌려 일을 저지르는 사기꾼 같은 존재들이에요. 그렇다면, 이 두 가지 공격이 왜 위험한지, 어떻게 막을 수 있는지 쉽게 풀어볼게요!


🛠 XSS(교차 사이트 스크립팅)란?

"내 집에 몰래 카메라를 설치한 것처럼!"

XSS는 공격자가 악의적인 스크립트를 웹사이트에 주입하여 사용자의 브라우저에서 실행되게 하는 공격이에요. 이 과정에서 사용자의 쿠키, 세션, 기타 민감 정보가 탈취되거나, 사용자의 화면에 이상한 팝업이 뜨기도 하죠.

💡 XSS의 종류

  1. 저장형 XSS
    • 공격 코드가 서버에 저장되어 여러 사용자에게 영향을 미치는 경우.
    • 예: 게시판 글이나 댓글에 악성 스크립트를 심는 행위.
  2. 반사형 XSS
    • URL이나 입력폼에 악성 스크립트를 포함해 사용자가 클릭하도록 유도하는 방식.
    • 예: 피싱 사이트로 유도.
  3. DOM 기반 XSS
    • 브라우저에서 실행되는 자바스크립트 코드의 취약점을 이용한 공격.
    • 예: 동적으로 생성된 HTML이 위험 요소를 포함할 때 발생.

🔒 XSS 방어법

  • 입력값 검증: HTML, 자바스크립트 등을 처리하기 전에 모든 입력값을 철저히 검사하세요.
  • 출력값 이스케이프: HTML 특수문자를 안전하게 처리(&, <, > 등).
  • Content Security Policy(CSP) 설정: 허가된 스크립트만 실행되도록 제어.

🛡 CSRF(사이트 간 요청 위조)란?

"남이 내 이름으로 쇼핑을 한다면?"

CSRF는 사용자가 인증된 상태를 악용해 공격자가 사용자를 대신하여 의도하지 않은 요청을 보내는 공격이에요. 예를 들어, 은행 사이트에서 로그인을 유지한 상태로 공격자가 만든 링크를 클릭했을 때, 원치 않는 송금이 이뤄지는 경우죠.

💡 CSRF의 동작 방식

  1. 사용자가 A 사이트에 로그인하여 세션 쿠키를 유지.
  2. 공격자는 사용자가 B 사이트(악성 링크)에 접속하도록 유도.
  3. B 사이트는 사용자의 인증 정보를 이용해 A 사이트에 요청을 전송.
  4. 결과적으로 사용자가 의도하지 않은 동작이 실행됨.

🔒 CSRF 방어법

  • CSRF 토큰 사용: 서버는 요청마다 고유 토큰을 생성해 유효성을 검증.
  • Referer 헤더 검증: 요청이 신뢰할 수 있는 도메인에서 왔는지 확인.
  • SameSite 쿠키 속성 설정: CSRF 공격 방지에 유용한 쿠키 보안 설정.

🤔 XSS와 CSRF의 차이

    항목                           XSS                                        CSRF

공격 대상 사용자의 브라우저 서버와 사용자의 신뢰 관계
공격 방식 악성 스크립트를 사용자 브라우저에서 실행 사용자의 인증 정보를 이용한 위조된 요청 전송
주요 피해 정보 탈취, 세션 하이재킹, 시각적 변조 원치 않는 요청 실행, 데이터 조작

😊 실전 예제로 이해하기

XSS 예제

<!-- 댓글 창에 악성 코드 입력 -->
<script>alert('해킹 당했어요!');</script>
  • 사용자가 해당 페이지에 접속하면 팝업이 뜨거나, 쿠키 정보가 공격자 서버로 전송돼요.

CSRF 예제

<!-- 은행 이체를 위장한 악성 링크 -->
<img src="http://bank.com/transfer?to=attacker&amount=1000">
  • 사용자가 이 이미지를 로드하면 자동으로 요청이 실행될 수 있어요.

😊 마무리하며..

XSS와 CSRF는 웹 개발 시 반드시 대비해야 할 공격이에요. 조금만 신경 쓰면 방어할 수 있으니, 여러분도 오늘 배운 내용을 코드에 적용해 보세요. 여러분의 웹사이트는 여러분의 집처럼 안전해야 합니다. 🏠
"작은 습관이 큰 보안을 만듭니다!" 🚀

728x90
반응형
SMALL