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

웹 애플리케이션이 이용자의 입력을 그대로 HTML에 출력하기 때문에, 입력에 포함된 스크립트가 열람자의 브라우저에서 그 사이트의 페이지로서 실행되어 버리는 취약점. 출력할 때 특별한 의미를 가진 문자를 이스케이프하는 것이 근본적인 대책이다.

일본어 명칭: クロスサイトスクリプティング(XSS)

크로스 사이트 스크립팅(XSS)은(는) 웹 기술 기초, 정보 보안 기초 등 2개 분야의 연습 문제 4개에 나와요.

분야: 정보 보안 기초

도전해 보기: 크로스 사이트 스크립팅(XSS) 관련 문제

브라우저의 localStorage와 Cookie의 차이로 올바른 것은?

  1. AlocalStorage의 데이터는 요청에 자동으로 붙지 않으며, 같은 출처인 페이지의 JavaScript에서 읽고 써서 사용한다
  2. BlocalStorage의 데이터도 Cookie와 마찬가지로 같은 사이트로 가는 요청마다 헤더에 넣어져 자동으로 서버로 보내진다
  3. ClocalStorage에도 HttpOnly 속성을 붙일 수 있으므로, 세션 ID를 두어도 페이지의 스크립트에서는 읽을 수 없다
정답과 해설 보기

정답: A. localStorage의 데이터는 요청에 자동으로 붙지 않으며, 같은 출처인 페이지의 JavaScript에서 읽고 써서 사용한다

localStorage는 출처마다 키와 값의 문자열을 저장하는 브라우저의 저장 공간으로, 유효 기간을 정하는 구조가 없으며 일반적으로 지울 때까지 남습니다. 서버로는 자동으로 보내지지 않으므로, 보내고 싶을 때는 JavaScript로 요청에 넣습니다. Cookie는 하나당 일반적으로 약 4 KB까지로 작고 요청할 때마다 자동으로 보내지는 데 비해, localStorage에는 더 큰 데이터를 둘 수 있습니다. 다만 페이지의 JavaScript에서는 언제든지 읽을 수 있으므로, XSS가 있으면 내용을 도둑맞습니다. 인증에 사용하는 값을 둘 때는 이 위험을 고려해야 합니다.

게시판 웹 애플리케이션에서 이용자가 게시한 글 안의 스크립트가 다른 열람자의 브라우저에서 실행되어 버리는 취약점이 있었다. 이 취약점의 이름과 근본적인 대책의 조합으로 올바른 것은?

  1. ASQL 인젝션. 데이터베이스 접속에 사용하는 비밀번호를 길게 한다
  2. B크로스 사이트 스크립팅(XSS). 게시된 글을 HTML로 출력할 때 <나 > 등 특별한 의미를 가진 문자를 이스케이프한다
  3. C크로스 사이트 스크립팅(XSS). 서버와 브라우저 사이의 통신을 HTTPS로 암호화한다
정답과 해설 보기

정답: B. 크로스 사이트 스크립팅(XSS). 게시된 글을 HTML로 출력할 때 <나 > 등 특별한 의미를 가진 문자를 이스케이프한다

크로스 사이트 스크립팅(XSS)은 웹 애플리케이션이 이용자의 입력을 그대로 HTML 안에 출력하기 때문에, 입력에 포함된 스크립트가 페이지의 일부로서 열람자의 브라우저에서 실행되어 버리는 취약점입니다. 스크립트는 그 사이트의 페이지로서 동작하므로, 열람자의 세션 정보(Cookie)를 훔치거나 가짜 입력란을 표시할 우려가 있습니다. 근본적인 대책은 출력하는 위치에 따라 <, >, &, 따옴표 같은 특별한 의미를 가진 문자를 이스케이프(예를 들어 <를 &lt;로 변환)하여 단순한 문자로 표시되게 하는 것입니다. 보조적인 대책으로 Cookie에 HttpOnly 속성을 붙여 스크립트에서 읽을 수 없게 하거나, 콘텐츠 보안 정책으로 실행할 수 있는 스크립트를 제한합니다. HTTPS는 통신로를 보호하는 것으로, 정규 페이지에 삽입된 스크립트의 실행은 막을 수 없습니다.

해설 속 크로스 사이트 스크립팅(XSS)

크로스 사이트 스크립팅(XSS)이(가) 나오는 문제 (4)

  1. 위의 헤더로 설정된 Cookie에 대한 설명으로 올바른 것은?
  2. 브라우저의 localStorage와 Cookie의 차이로 올바른 것은?
  3. 게시판 웹 애플리케이션에서 이용자가 게시한 글 안의 스크립트가 다른 열람자의 브라우저에서 실행되어 버리는 취약점이 있었다. 이 취약점의 이름과 근본적인 대책의 조합으로 올바른 것은?
  4. 웹 애플리케이션에서 로그인한 상태의 이용자가 공격자가 준비한 함정 페이지를 열면, 이용자의 브라우저에서 정규 사이트로 이용자가 의도하지 않은 송금이나 설정 변경 요청이 보내지는 취약점이 있다. 이 취약점에 대한 대책으로 적절한 것은?

관련 용어

쿠키(Cookie) 공개 키 암호(Public-key Cryptography) 다요소 인증(Multi-factor Authentication) 대칭 키 암호(Symmetric-key Cryptography) 디지털 서명(Digital Signature) 랜섬웨어(Ransomware) 메시지 인증 코드(Message Authentication Code) 사회공학 기법(Social Engineering) 솔트(Salt) 제로데이 공격(Zero-day Attack)

용어집으로 돌아가기