Cross-Site Scripting(XSS) 취약점이란?

  • 관리자가 아닌 이가 신뢰할 수 있는 웹 사이트에 클라이언트 측에서 실행될  수 있는 악성 스크립트를 삽입할 수 있는 취약점
  • 일반 사용자가 악성 스크립트가 저장된 웹 페이지에 접근할 경우 해당 사용자의 권한으로 저장된 악성 스크립트가 수행되어 정보 유출 등 공격이 수행된다.
  • 공격 방식에 따라 아래와 같이 분류
    • Reflected XSS
      • URL에 악성 스크립트를 포함하여 배포하는 방식
    • Stored XSS
      • 게시판 등에 악성 스크립트가 포함된 글을 작성하여 게시글을 확인하는 사람을 대상으로 공격하는 방식
    • DOM based XSS
      • 피해자의 브라우저에서 DOM 환경을 수정하는 방식의 공격

 

Cross-Site Scripting(XSS) 대응 방안

  • 웹 서버에서 입력 값에 정의된 문자 길이를 제한 또는 검증하여 클라이언트 측에서 실행될 수 있는 스크립트 명령이 삽입되지 않도록 설정
  • HTML 태그의 사용이 불필요한 경우 사용자의 입력 값에서 HTML 특수 문자들을 HTML Entity로 변환하여 스크립트를 일반 문자열로 인식되도록 한다.
  • 부득이하게 HTML 태그를 반드시 사용해야할 경우에는 블랙리스트 또는 화이트리스트 방식을 이용해 반드시 사용해야만 하는 특정 태그만 사용할 수 있도록 설정
  • 웹 방화벽(WAF, Web Application Firewall)를 사용하여 비정상적인 데이터가 전송될 경우 차단