XSS란 Cross Site Scripting 의 약자로 웹의 보안성 취약 중 하나이다.
악의적 의도로 제작된 스크립트를 URL 파라메터 등에 삽입해 요청을 웹서버로 전송한다. 이 요청은 웹서버에 의해 해석되 웹 페이지에 출력하게 되고 사용자는 자신도 모르는 사이에 변조된 사이트에서 자신의 정보를 유출 당한 수도 있고 피싱 사이트로 페이지를 전환 당할 수도 있다. XSS가 위협적인 이유는 간단히 script, html, VBScript, AcriveX 등을 삽입 할 수 있고, 이 변조는 간단히 URL에 실리는 것만으로도 페이지가 편하기 때문에 링크등에 보이지 않게 사용자에게 실행되여 사용자는 정보유출등의 피해를 자신도 모르는 사이에 당할 수도 있다.
XSS는 크게 Reflected XSS, Stored XSS로 나뉜다.
Reflected XSS (반사된 XSS) 는 위에 설명한대로 URL, 쿠키변조, 헤더등에 실어 보내 악의적 스크립트를 실행 시키에 하는 방법이다.
URL 내 스크립트 삽입은 는 간단히 URL 링크를 클릭하는 것으로 웹 페이지에 스크립트를 삽입 할 수 있고, 링크이기 떄문에 사용자도 알지 못해 많이 사용 되는 방식이다.
아래 그림은 실제 운영중인 국내 모 반값 할인 사이트에 XSS를 시도해 캡춰를 한 모습이다. 이렇게 간단한 스크립트 삽입만으로도 아래와 같이 페이지를 변조, 팝업을 띄울수 있다.
이 이외에도 쿠키 변조, 헤더 변경 등 이 있지만 쿠키 변조나 헤더 변경등 의 방법은 페이지에 접근하는 사용자가 직접 변경 해야 하기 때문에 타인에게 피해를 입히지는 않는다.
Stored XSS (저장된 XSS) 는 게시판 등에 글을 올릴때 script를 포함해 올리는 방식이다. Reflected XSS가 사용자의 클릭에 의한 일회성이라면 Stored XSS 는 게시물에 스크립트를 포함하므로 같은 페이지에 접근하는 수 많은 사람들에게 같은 피해를 입힐 수 있다.
이러한 XSS취약점의 대응책은 의외로 간단하다. request에서 스크립트 태그 패턴을 삭제하거나, 숫자나 특수문자등 만 파라메터로 받는 변수는 해당 문자열을 검사해 다른 문자는 삭제한다. 또 입력받는 파라메터의 문자열을 제한하는 방법이 있다. 지영옹.
아. 인터파크는 개선했어요. 누가? 내가. 지영옹.