Tiny Bunny

Rookies/애플리케이션 보안

[SK shieldus Rookies 19기] 크로스 사이트 스크립트 XSS (Cross-Site Scripting)

bento 2024. 3. 28. 02:14
[SK쉴더스 Rookies 19기] 클라우드 기반 스마트 융합보안 과정

01. XSS (Cross-Site Scripting)

: 웹 페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도

 

02. Stored XSS

: 공격자의 스크립트 서버에 저장되었다가 사용자 조회 시 브라우저에 전달되어 실행

불특정 다수에게 지속적으로 전달됨

 

ex. 게시판에 <script> alert('xss') </script> 와 같은 스크립트를 넣으면, 조회하는 사용자 쪽에서 스크립트가 실행 됨

 

03. Reflective XSS

: 입력 값이 다음 화면 출력에 사용되는 경우, 입력 값 제한이 없다면 입력 된 스크립트가 사용자 브라우저에서 실행

단축 url과 같이 링크 내용을 숨겨서 전달하는 경우가 많음

 

ex. id 중복 체크하는 페이지에서 

~ check.jsp?abc<script>alert('xss')</script> 처럼 파라미터로 전달되는 값에 스크립트를 넣고, 해당 페이지로 넘어가게 하는 url을 단축을 통해 불특정 다수에게 공격

04. DOM Based XSS

: 개발자가 작성한 스크립트 코드의 취약점을 이용

공격자의 스크립트가 DOM 영역에서 실행됨으로써 서버와의 상호작용 없이 브라우저 자체에서 실행

 

DOM(Document Object Model, 문서 객체 모델)

 

브라우저가 웹 페이지를 렌더링 하는데 사용하는 모델 , HTML 및 XML 문서에 접근하기 위한 인터페이스

브라우저는 HTML 문서를 읽고 해석한 결과를 DOM 형태로 재구성하여 사용자에게 제공

 


방어

  • 입력 값에 브라우저에서 실행 가능한 코드(스크립트 코드)가 포함되어 있는지 확인 
  • 출력 값에 의도하지 않은(= 개발자가 작성하지 않은) 실행 가능한 코드가 포함되어 있는지 확인
  • 필터링, 인코딩 작업을 수행할 때는 검증된 로직, 라이브러리, 프레임워크를 사용해서 구현 

 

 

728x90