CS 준비

[네트워크]XSS

해로몬 2025. 2. 10. 11:49

XSS란?

Cross Site Scripting

즉, 웹 사이트의 어드민(관리자)이 아닌 악의적인 목적을 가진 제 3자가 악성 스크립트를 삽입하여 의도하지 않은 명령을 실행시키거나 세션 등을 탈취할 수 있는 취약점입니다.

이로 인한 위험성

  1. 쿠키 및 세션정보 탈취
  2. 악성 프로그램 다운 유도
  3. 의도하지 않은 페이지 노출

공격 종류

● Reflected XSS : 반사형 크로스사이트스크립트

  • 공격자가 악성 스크립트를 클라이언트에게 직접 전달하여 공격하는 방식입니다.

특히 URL에 스크립트를 포함시켜 공격하는 경우가 대표적이며 URL이 길면 클라이언트가 의구심을 가질 수 있기 때문에 Shorten URL(URL 단축)을 이용해 짧은 URL로 만들어 공격하기도 합니다.

서버에 스크립트를 저장하지 않기 때문에 서버에서 이루어지는 필터링을 피할 수 있는 공격 방식입니다.

 

● Stored XSS : 저장형 크로스사이트 스크립트

  • 공격자가 악성 스크립트를 서버에 저장시킨 다음 클라이언트의 요청/응답 과정을 통해 공격하는 방식입니다.

여기서 스크립트를 서버에 저장하는 행위는 게시글 쓰기 등의 행동을 지칭합니다.

보통 서버에서 필터링을 하기 때문에 공격을 우회하기 어렵지만 한 번 성공하면 관리자 입장에서는 눈치채기 힘들고 광범위한 피해를 줄 수 있다는 것이 특징입니다.

 

● DOM Based XSS : DOM 기반 크로스사이트 스크립트

  • 피해자의 브라우저가 html 페이지를 분석하여 DOM을 생성할 때 악성 스크립트가 DOM의 일부로 구성되어 생성되는 공격입니다. 서버의 응답 내에는 악성 스크립트가 포함되지 않지만 브라우저의 응답 페이지에 정상적인 스크립트가 실행되면서 악성 스크립트가 추가되서 실행되는 특징이 있습니다.
    • DOM(Document Object Model, 문서 객체 모델)
      • : 브라우저가 웹 페이지를 렌더링 하는데 사용하는 모델로 HTML 및 XML 문서에 접근하기 위한 인터페이스

XSS 취약점 보안 대책

  • HTML 엔티티 변환 (Escape 처리) ⇒ 기본적인 방어
    • 문제 상황 : 사용자가 <script>alert('XSS')</script> 같은 코드를 입력하면 스크립트가 실행
    • 특수문자를 HTML 엔티티로 변환하여 브라우저가 코드로 해석하지 못하게 막음!.

    문자  변환된 엔티티
    < &lt;
    > &gt;
    " &quot;
    ' &#39;
  • CSP(Content Security Policy) 적용 ⇒ 브라우저 레벨에서 방어
    • 브라우저가 외부 스크립트 실행을 아예 차단하도록 설정함.
    • HTML, JavaScript 인코딩이 뚫려도 브라우저가 보호
    Content-Security-Policy: default-src 'self';
  • whiteList 필터링 ⇒ 가장 강력한 방어
    • 허용된 값만 사용할 수 있도록 제한하는 방식입니다.
    인 WhiteList 필터링 방식을 적용해야 합니다.장점
    1. 허용 된 것만 남기므로 보안성이 좋음
    2. 사용자 입력을 제한하면서도 일부 HTML 허용
    3. 라이브러리를 활용하면 쉽고 강력한 보안 적용 가능
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;

public class XSSWhiteListExample {
    public static void main(String[] args) {
        String unsafeInput = "<script>alert('XSS');</script><b>안전한 텍스트</b><p>허용된 문장</p>";

        // 화이트리스트 필터링: <b>, <i>, <p> 태그만 허용
        String safeOutput = Jsoup.clean(unsafeInput, Whitelist.basic());

        System.out.println(safeOutput);
    }
}

//결과 : <b>안전한 텍스트</b><p>허용된 문장</p>
//<script>태그 제거, <b>,<p> 태그 허용

 

 

 

 

 

https://tibetsandfox.tistory.com/5

'CS 준비' 카테고리의 다른 글

[네트워크]CORS란?  (0) 2025.02.10
[네트워크]SOP란?  (0) 2025.02.10
서브넷 마스크 & 게이트웨이  (0) 2025.02.10
[네트워크]로드밸런서가 무엇인가요?  (0) 2025.02.10
[네트워크]DNS란?  (0) 2025.02.10