본문 바로가기

개발 이모저모

XSS란?

728x90
반응형

XSS란 Cross-Site-Scripting으로 웹 애플리케여선 보안 취약점 중 하나이다. 공격자가 악성 스크립트를 웹페이지에 삽입하여 다른 사용자의 브라우저에서 실행되도록 만드는 공격 기법이다. 이를 통해 공격자는 사용자 정보를 탈취하거나 웹 애플리케이션의 동작을 의도치 않게 변경하거나, 사용자를 악성 사이트로 리다이렉트 하는 등의 악의적인 행동을 할 수 있다.

XSS 공격은 사용자의 쿠키를 탈취하여 세션을 로채는 세션 하이재킹(Session Hijacking), 사용자 몰레 악성 웹사이트로 리다이렉트하는 피싱(Phishing) 그리고 브라우저에서 악성 코드 실행으로 피해발생하는 등 여러 사례들이 있다.

XSS의 종류로는 Stored XSS, Refelected XSS, DOM-based XSS가 있다.

  • Stored XSS
    • 공격 스크립트가 서버에 저장된 데이터에 포함되어 다른 사용자가 웹 페이지를 요청할 때 실행된다. 예시로, 댓글로 사용자 입력이 저장되는 기능을 통해 악성코드를 삽입하는 것이다.
  • Reflected XSS
    • 공격 스크립트가 서버에 저장되지 않고, 요청에 반사되어 사용자에게 전달된다. 주로 URL에 악성 스크립트를 포함하여 사용자가 이를 클릭하도록 유도한다.
  • DOM-based XSS
    • 클라이언트 측 코드에서 DOM을 조작할 때 발생한다. 서버와의 통신없이 브라우저에서 실행되는 자바스크립트에서 취약점이 발생한다.

XSS공격을 방어하는 방법에도 여러가지가 있다.

  • 사용자 입력 데이터를 철저히 검증하고 허용된 값만 처리한다.
  • HTML, JavaScript, URL, CSS등 컨텍스트에 맞는 Escape처리를 한다. (output escaping)
  • CSP를 설정하여 브라우저가 허용된 스크립트만 실행하도록 제한한다.(content security policy)
  • 보안 라이브러리나 프레임워크에서 제공하는 XSS방지 기능을 사용한다. (ex : spring security)
  • HTTPonly 쿠키 사용을 하여 자바스크립트를 통한 쿠키 접근을 방지한다.
  • React, Vue.js 등 프레임워크를 사용하면 기본적으로 xss방지 기능을 제공한다.

 


최근 웹 개발 하면서 Spring Security를 적용하고, 보안 관련해서 접하다보니 개념들이 생소해서 정리하게 되었다. CSP관련해서 궁금한 사항도 같이 정리했다!

2025.01.17 - [개발 이모저모] - CSP란 ?

728x90
반응형