크로스 사이트 스크립팅(XSS) 알아보기: 유형 및 방지 방법

신수정·2024년 5월 10일

크로스 사이트 스크립팅(XSS, Cross-Site Scripting)은 웹 애플리케이션 보안 취약점 중 하나로, 공격자가 악의적인 스크립트를 웹 페이지에 삽입하여 사용자의 브라우저에서 실행되도록 만드는 것을 의미합니다. 이를 통해 공격자는 사용자의 쿠키, 세션 정보, 웹 페이지 콘텐츠 등을 탈취하거나, 피싱 페이지로 리다이렉션하는 등의 공격을 할 수 있습니다.

XSS 공격 유형

XSS는 크게 세 가지 유형으로 분류됩니다.

  1. 반사형(Reflected) XSS:

    • 웹 애플리케이션이 사용자로부터 입력을 받아 처리한 후, 입력값을 그대로 다시 웹 페이지에 표시하는 경우에 발생합니다.
    • 일반적으로 악의적인 스크립트는 URL이나 폼 데이터를 통해 전달됩니다.
    • 피해자가 해당 악성 링크를 클릭해야 공격이 실행됩니다.
  2. 저장형(Persistent) XSS:

    • 웹 애플리케이션이 사용자로부터 입력받은 데이터를 데이터베이스에 저장하고 이후 웹 페이지에 표시하는 경우에 발생합니다.
    • 공격 스크립트는 다른 사용자가 해당 페이지에 접근할 때마다 실행됩니다.
    • 주로 게시판, 댓글, 프로필 정보 등 사용자 콘텐츠를 저장하는 부분에서 발생합니다.
  3. DOM 기반(DOM-based) XSS:

    • 웹 페이지의 클라이언트 측 코드(자바스크립트)가 사용자 입력값을 적절히 처리하지 못해 발생하는 공격입니다.
    • 서버 측에 요청이 전달되지 않고 클라이언트에서만 발생하므로, 서버에서 필터링을 거쳐도 취약할 수 있습니다.

XSS 공격 방지 방법

  1. 입력 데이터 검증 및 필터링:

    • 모든 입력 데이터를 적절히 검증하고 필터링해야 합니다.
    • HTML 이스케이프를 적용하여 태그를 비활성화해야 합니다.
  2. 콘텐츠 보안 정책(Content Security Policy, CSP):

    • 브라우저가 특정한 스크립트만 실행하도록 지시하는 HTTP 헤더를 설정합니다.
    • Content-Security-Policy 헤더를 통해 허용된 출처만 스크립트 실행이 가능하도록 제한합니다.
  3. 출력 데이터 이스케이핑:

    • 모든 출력 데이터에 대해 HTML 이스케이핑을 적용해야 합니다.
    • 특히 JavaScript나 CSS에서 사용되는 값은 각 상황에 맞게 적절한 이스케이핑이 필요합니다.
  4. HttpOnly 및 Secure 쿠키 사용:

    • 쿠키에 HttpOnly 속성을 적용하여 자바스크립트로 쿠키에 접근할 수 없게 합니다.
    • Secure 속성을 사용하여 HTTPS 연결을 통해서만 쿠키가 전송되도록 합니다.
  5. 라이브러리 사용:

    • OWASP의 ESAPI, Microsoft의 AntiXSS Library 등 검증된 라이브러리를 사용하여 XSS 공격을 방지할 수 있습니다.

XSS 취약점은 웹 애플리케이션의 구조에 따라 다양한 방식으로 발생할 수 있으므로, 개발자는 입력 및 출력 데이터에 대해 적절한 보안 처리를 해야 합니다.

profile
안녕하세요:)

0개의 댓글