본문 바로가기

ISMS-P/보안

크로스 사이트 스크립팅(Cross-Site Scripting, XSS) 유형과 방어

SMALL

크로스 사이트 스크립팅(Cross-Site Scripting, XSS)은 웹 애플리케이션의 보안 취약점 중 하나로, 공격자가 웹 사이트에 악의적인 스크립트를 삽입하는 공격입니다. 이 취약점은 사용자의 브라우저에서 실행되며, 쿠키나 세션 토큰, 또는 다른 민감한 정보를 탈취하는 데 사용될 수 있습니다.

**XSS 공격의 유형**

1. **Stored XSS (저장형 XSS):** 공격자가 악의적인 스크립트를 웹 애플리케이션의 데이터베이스에 저장하게 하는 형태입니다. 사용자가 특정 페이지를 열면 데이터베이스에서 스크립트가 로드되어 실행됩니다. 

2. **Reflected XSS (반사형 XSS):** 공격자가 악의적인 스크립트를 URL의 쿼리 문자열에 포함시키는 형태입니다. 사용자가 해당 URL을 클릭하면 웹 애플리케이션은 스크립트를 웹 페이지에 '반사'하고, 사용자의 브라우저에서 스크립트가 실행됩니다. 

3. **DOM-based XSS (DOM 기반 XSS):** 웹 애플리케이션의 클라이언트 측 코드 (즉, 자바스크립트)에서 발생하는 취약점을 이용한 공격입니다. 이 공격은 Document Object Model(DOM)을 조작하여 악의적인 스크립트를 실행합니다.

**방어 전략**

1. **입력 검증:** 사용자의 입력을 적절히 검증하고 필터링하여 악의적인 스크립트가 삽입되지 않도록 해야 합니다. 이는 클라이언트 측과 서버 측 모두에서 수행되어야 합니다.

2. **출력 인코딩:** 사용자의 입력을 그대로 출력하지 않고, HTML 엔티티와 같은 안전한 형태로 인코딩해야 합니다. 이를 통해 브라우저가 사용자의 입력을 스크립트로 해석하지 못하게 할 수 있습니다.

3. **Content Security Policy (CSP):** CSP는 웹 브라우저에게 어떤 출처의 스크립트를 실행할 수 있는지를 지시하는 방법입니다. 이를 통해 악의적인 스크립트의 실행을 차단할 수 있습니다.

4. **HTTPOnly 쿠키:** HTTPOnly 플래그가 설정된 쿠키는 자바스크립트에 의해 접근할 수 없습니다. 따라서 이 플래그를 사용하면 XSS 공격에 의한 쿠키 탈취를 방지할 수 있습니다.