용어와 정의
영문 또는 원어: XSS
영문 정식명칭: Cross-Site Scripting
한글명: 사이트 간 스크립팅
XSS는 신뢰하지 않는 내용이 웹 페이지에서 실행 가능한 코드로 해석돼 다른 사용자의 브라우저 문맥에서 동작하는 문제입니다.
정확한 의미와 원리
출력 위치에 맞지 않는 처리나 안전하지 않은 DOM 조작으로 발생할 수 있습니다. HTML, 속성, URL과 스크립트 문맥은 필요한 보호 방식이 서로 다릅니다.
쉽게 이해하는 사용 예시
사용자가 남긴 글을 페이지에 표시할 때 내용을 코드가 아닌 텍스트로 처리하고 필요한 경우 검증된 HTML 정제기를 사용하는 방식으로 방어합니다.
종류와 관련 개념의 차이
반사형은 요청 값이 응답에, 저장형은 저장된 내용이 이후 응답에 반영되는 특성을 말합니다. DOM 기반은 브라우저 안의 위험한 처리 경로에 초점을 두므로 분류 기준이 완전히 같지 않습니다.
적용 조건과 오해하기 쉬운 점
CSP는 추가 보호 수단이며 출력 인코딩과 안전한 DOM 사용을 대신하지 않습니다. 쿠키 탈취가 안 되더라도 사용자 문맥에서 다른 유해 동작이 가능할 수 있습니다.
Reflected XSS 반사형 XSS
이 절의 용어: Reflected XSS / 반사형 XSS
반사형 XSS는 신뢰하지 않는 요청 값이 응답에 반영되면서 브라우저에서 실행 가능한 코드로 해석되는 경우를 가리킵니다. 입력을 받는 것 자체보다 출력 위치에 맞는 처리가 중요합니다. 검증된 출력 인코딩과 안전한 렌더링을 적용해야 합니다.
Stored XSS 저장형 XSS
이 절의 용어: Stored XSS / 저장형 XSS
저장형 XSS는 저장된 신뢰하지 않는 내용이 이후 사용자 화면에 표시되며 실행되는 경우를 가리킵니다. 입력한 사용자뿐 아니라 자료를 보는 다른 사용자에게도 영향을 줄 수 있습니다. 저장 여부와 별개로 출력 문맥별 안전 처리가 필요합니다.
DOM-based XSS DOM 기반 XSS
이 절의 용어: DOM-based XSS / DOM 기반 XSS
DOM 기반 XSS는 브라우저 안의 스크립트가 신뢰하지 않는 값을 위험한 DOM 처리에 전달해 생기는 문제를 가리킵니다. 서버 응답에 공격 코드가 그대로 보이지 않을 수도 있습니다. 안전한 텍스트 API와 검증된 정제 방식을 사용해야 합니다.
관련 용어와 글
함께 비교할 용어
- SQL injection SQL 삽입 공격
- CSRF 사이트 간 요청 위조
- SSRF 서버 측 요청 위조
- CORS 교차 출처 리소스 공유
- CSP 콘텐츠 보안 정책
- Clickjacking 클릭재킹
- Session cookie 세션 쿠키
- Reflected XSS 반사형 XSS
- Stored XSS 저장형 XSS
- DOM-based XSS DOM 기반 XSS
- CSRF token 요청 위조 방지 토큰
- CSP nonce CSP 실행 허용 난수
- HttpOnly 스크립트 접근을 제한하는 쿠키 속성
- Secure cookie attribute 보호 연결 전송 쿠키 속성
- SameSite 사이트 간 쿠키 전송 조건