교육 목적 전용 (Educational Purpose Only)
본 도구는 웹 보안 교육 및 자체 시스템 보안 점검 목적으로만 제공됩니다. 허가 없이 타인의 시스템에 이 패턴을 사용하는 것은 불법이며, 이로 인한 모든 법적 책임은 사용자에게 있습니다. 본 사이트는 악의적 사용에 대해 어떠한 책임도 지지 않습니다.
전체 패턴: 0개 | 표시 중: 0개
복사 결과
이런 도구는 어때요?
XSS 테스트 구문 모음 완벽 가이드
크로스 사이트 스크립팅(Cross-Site Scripting, XSS)은 웹 애플리케이션에서 가장 흔하게 발견되는 보안 취약점 중 하나입니다. OWASP Top 10에 지속적으로 포함되어 있으며, 공격자가 다른 사용자의 브라우저에서 악성 스크립트를 실행할 수 있게 하는 인젝션 공격의 한 유형입니다. XSS 공격은 세션 하이재킹, 계정 탈취, 페이지 변조, 악성코드 배포, 피싱 공격 등 다양한 위협으로 이어질 수 있어 웹 개발자와 보안 전문가가 반드시 이해하고 대응해야 하는 영역입니다.
본 도구는 웹 보안 교육 및 자체 시스템 보안 점검을 위해 다양한 XSS 테스트 패턴을 카테고리별로 정리하여 제공합니다. 기본적인 스크립트 태그 삽입부터 이벤트 핸들러 활용, 다양한 인코딩 우회 기법, DOM 기반 XSS, SVG/MathML 벡터, CSS 인젝션, 필터 우회 기법, 고급 쿠키 탈취 및 키로거 시뮬레이션까지 총 8개 카테고리로 분류되어 있습니다.
XSS의 세 가지 주요 유형
Reflected XSS(반사형): 사용자가 제공한 입력값이 서버의 응답에 즉시 반영되는 형태입니다. URL 파라미터나 폼 데이터를 통해 전달된 악성 스크립트가 서버에서 적절한 검증 없이 HTML 응답에 포함될 때 발생합니다. 주로 피싱 이메일이나 악성 링크를 통해 공격이 이루어집니다.
Stored XSS(저장형): 악성 스크립트가 서버의 데이터베이스에 영구적으로 저장되어, 해당 데이터를 조회하는 모든 사용자에게 영향을 미치는 가장 위험한 유형입니다. 게시판, 댓글, 프로필 정보 등에서 주로 발생하며, 한 번의 공격으로 다수의 사용자를 대상으로 할 수 있습니다.
DOM-based XSS(DOM 기반): 서버 측이 아닌 클라이언트 측 JavaScript 코드의 취약점을 이용하는 유형입니다. document.location, document.URL, document.referrer, window.name 등의 DOM 속성이 적절한 검증 없이 innerHTML이나 document.write() 등에 사용될 때 발생합니다.
효과적인 XSS 방어 전략
입력 검증(Input Validation): 화이트리스트 기반으로 허용 가능한 입력만 수락
출력 인코딩(Output Encoding): 컨텍스트에 맞는 이스케이핑 적용 (HTML, JavaScript, URL, CSS)
Content Security Policy(CSP): HTTP 헤더를 통해 스크립트 실행 소스 제한
HttpOnly 쿠키: JavaScript에서 쿠키 접근 차단
DOMPurify 라이브러리: 클라이언트 측 HTML 정화 처리
X-XSS-Protection 헤더: 브라우저 내장 XSS 필터 활성화
자주 묻는 질문 (FAQ)
Q. 이 도구의 XSS 패턴을 아무 사이트에 사용해도 되나요?
A. 절대 아닙니다. 본 도구는 교육 목적 및 자신이 소유하거나 명시적 허가를 받은 시스템의 보안 점검에만 사용해야 합니다. 허가 없이 타인의 웹사이트에 XSS 공격을 시도하는 것은 정보통신망법 위반으로 형사 처벌 대상입니다.
Q. XSS 취약점을 발견하면 어떻게 해야 하나요?
A. 자체 시스템에서 발견한 경우 즉시 패치를 적용해야 합니다. 타사 시스템에서 발견한 경우 해당 서비스의 보안 담당자에게 책임감 있는 공개(Responsible Disclosure) 절차에 따라 보고하세요. 많은 서비스가 버그 바운티 프로그램을 운영하고 있습니다.
Q. CSP(Content Security Policy)만 설정하면 XSS를 완전히 차단할 수 있나요?
A. CSP는 강력한 방어 수단이지만 단독으로 완벽한 보호를 보장하지 않습니다. 입력 검증, 출력 인코딩, HttpOnly 쿠키 등 다층 방어(Defense in Depth) 전략을 함께 적용해야 합니다. 또한 CSP 설정이 너무 느슨하면 우회될 수 있으므로 최소 권한 원칙에 따라 엄격하게 설정해야 합니다.
Q. React나 Vue 같은 모던 프레임워크를 사용하면 XSS에 안전한가요?
A. React, Vue, Angular 등의 프레임워크는 기본적으로 출력 인코딩을 수행하여 XSS를 상당 부분 방지합니다. 하지만 dangerouslySetInnerHTML(React)이나 v-html(Vue) 같은 Raw HTML 삽입 기능을 사용하면 여전히 취약할 수 있습니다. 프레임워크의 보안 기능을 우회하는 코드 패턴에 주의해야 합니다.
Q. WAF(Web Application Firewall)가 있으면 XSS를 다 막아주나요?
A. WAF는 알려진 패턴의 XSS 공격을 차단하는 데 도움이 되지만, 새로운 우회 기법이나 인코딩 변환을 통한 공격은 탐지하지 못할 수 있습니다. WAF는 보조적인 방어 수단으로 활용하고, 근본적인 보안 코딩 관행을 함께 적용해야 합니다.
',
desc: '가장 기본적인 XSS 공격 벡터입니다. script 태그를 직접 삽입하여 JavaScript를 실행합니다.',
defense: '입력값에서 ',
desc: '외부 JavaScript 파일을 로드하는 방식입니다. 공격자의 서버에서 악성 스크립트를 불러옵니다.',
defense: 'CSP 헤더에서 script-src를 신뢰할 수 있는 도메인으로 제한하세요. 예: Content-Security-Policy: script-src \'self\''
},
{
cat: 'basic',
name: 'IMG 태그 onerror',
code: '',
desc: '존재하지 않는 이미지를 로드하여 onerror 이벤트를 발생시킵니다. script 태그 필터를 우회할 수 있습니다.',
defense: '사용자 입력에서 이벤트 핸들러 속성(on*)을 제거하세요. DOMPurify 등의 HTML 정화 라이브러리를 사용하세요.'
},
{
cat: 'basic',
name: 'IMG 태그 (슬래시 없음)',
code: '',
desc: 'HTML 파서의 관대한 처리를 이용합니다. 태그와 속성 사이에 슬래시를 사용하여 공백 필터를 우회합니다.',
defense: 'HTML 파서 수준의 입력 검증과 함께 출력 인코딩을 적용하세요.'
},
{
cat: 'basic',
name: 'Body 태그 onload',
code: '',
desc: 'body 태그의 onload 이벤트를 이용합니다. 페이지가 로드될 때 자동으로 실행됩니다.',
defense: '사용자 입력을 HTML 태그 컨텍스트에 삽입하지 마세요. 템플릿 엔진의 자동 이스케이핑을 활용하세요.'
},
{
cat: 'basic',
name: 'Input 태그 autofocus',
code: '',
desc: 'autofocus 속성으로 자동 포커스를 주어 onfocus 이벤트를 발생시킵니다.',
defense: '사용자 입력에서 autofocus 속성과 이벤트 핸들러를 제거하세요.'
},
{
cat: 'basic',
name: 'Iframe 삽입',
code: '',
desc: 'iframe의 src에 javascript: 프로토콜을 사용하여 스크립트를 실행합니다.',
defense: 'CSP frame-src 지시어를 설정하고, javascript: 프로토콜을 차단하세요. sandbox 속성을 활용하세요.'
},
{
cat: 'basic',
name: 'Marquee 태그',
code: '