스물두줄

컴퓨터시스템응용기술사 · 정보보호 및 보안 관리

크로스사이트 스크립팅(XSS)

크로스사이트 스크립팅(XSS)은 웹 페이지에 악성 스크립트를 넣어 다른 사용자의 브라우저에서 실행시키는 공격이다. 공격자는 서버에 침투하지 않아도 피해자의 권한으로 행위를 수행할 수 있다. 따라서 공격 대상은 웹 사이트가 아니라 그 사이트를 이용하는 사용자다. XSS…

주요 장면

  1. 0:02 XSS란 무엇인가
  2. 0:23 XSS의 원리와 공격 흐름
  3. 0:49 XSS의 세 가지 유형
  4. 1:24 헷갈리는 방어 개념
  5. 1:55 정리와 직접 풀기 정답

대본

XSS란 무엇인가

크로스사이트 스크립팅(XSS)은 웹 페이지에 악성 스크립트를 넣어 다른 사용자의 브라우저에서 실행시키는 공격이다.

공격자는 서버에 침투하지 않아도 피해자의 권한으로 행위를 수행할 수 있다.

따라서 공격 대상은 웹 사이트가 아니라 그 사이트를 이용하는 사용자다.

XSS의 원리와 공격 흐름

XSS는 입력값이 검증 없이 응답 HTML에 들어가는 데서 시작된다.

공격 페이로드가 서버를 거쳐 응답에 실리면 브라우저가 이를 스크립트로 실행한다.

방어의 핵심은 출력 시점에 특수 문자를 HTML 엔터티로 바꾸는 출력 인코딩이다.

예를 들어 < 는 &lt; 로 바꾸면 브라우저는 태그가 아닌 문자로 표시한다.

XSS의 세 가지 유형

XSS는 악성 스크립트가 들어가는 경로와 실행 위치에 따라 세 유형으로 나뉜다.

저장형은 서버 저장소에 남아 방문자 모두에게 실행된다. 한 번 심어지면 피해가 넓다.

반사형은 요청에 실린 값이 응답에 즉시 되돌아와 실행된다. 피해자가 악성 링크를 눌러야 성립한다.

DOM 기반은 서버 응답이 정상이어도 클라이언트 코드가 입력을 위험하게 쓰면 발생한다.

세 유형은 스크립트가 머무는 곳, 즉 저장소·요청 응답·DOM으로 구분된다.

헷갈리는 방어 개념

헷갈리기 쉬운 부분은 입력 검증과 출력 인코딩의 역할 차이다.

입력 검증은 허용 목록과 길이 제한으로 형식을 거르는 보조 수단이다.

출력 인코딩은 출력 시점에 특수 문자를 엔터티로 바꿔 코드 해석을 막는다.

블랙리스트 방식의 태그 제거는 우회가 쉬워 답안에서 감점 요인이 된다.

정리와 직접 풀기 정답

직접 풀기 문제의 정답은 저장형 XSS다.

XSS는 악성 스크립트를 브라우저에서 실행시키는 공격이고, 세 가지 유형으로 나뉜다.

방어는 출력 인코딩을 중심으로 입력 검증과 CSP, HttpOnly 쿠키를 함께 적용한다.

시험에서는 정의, 유형 구분, 시큐어 코딩 대응을 묻는 문제가 반복 출제된다.

같은 장의 영상