의문점 공부하기/📌 Java

📌 XSS 공격이 무엇이고, 어떻게 피할 수 있을까!?!?

아리빠 2023. 8. 21. 19:06

XSS(크로스 사이트 스크립팅):  웹 보안 취약점 중 하나로, 공격자가 악의적인 스크립트를 웹 페이지에 삽입하여 사용자들의 브라우저에서 실행시키는 공격 형태, 공격자는 사용자의 세션 정보를 탈취하거나 악성 행동을 수행할 수 있다.

Stored XSS (영구 저장형 XSS):

악의적인 스크립트가 웹 서버에 저장되어 다른 사용자들이 해당 스크립트를 불러와 실행하게 된다.

댓글, 포럼 게시물, 프로필 설명 등 사용자 생성 콘텐츠에 주로 발생

Reflected XSS (반사형 XSS): 

사용자가 악의적인 링크를 클릭하거나 악의적인 데이터를 서버로 보낼 때 발생

서버는 해당 데이터를 동적으로 웹 페이지에 포함시키고, 이로 인해 악성 스크립트가 사용자의 브라우저에서 실행된다

DOM-based XSS: 

Document Object Model(DOM)을 조작하여 공격하는 형태로, 웹 페이지의 동적인 부분을 대상으로 한다. 

클라이언트 측 스크립트가 DOM 조작에 의존하는 경우 발생할 수 있다.


피해를 막는 방법

입력값 검증 및 정제: 사용자로부터 입력을 받을 때, 입력값을 검증하고 허용된 문자만 허용하는 필터링을 수행해야함

입력값을 서버로 전달하기 전에 스크립트 코드를 제거하거나 이스케이프하여 처리하는 방식을 적용

출력 시 이스케이프: 사용자로부터 입력을 받아 출력할 때에도 특수 문자를 이스케이프하여 스크립트가 실행되지 않도록 해야 한다. 웹 어플리케이션에서 출력하는 모든 부분에 대해 이스케이프 처리를 적용하기..!

Content Security Policy (CSP): CSP는 웹 사이트에서 로드될 수 있는 리소스를 제한하여 악성 스크립트의 실행을 방지

이 정책은 웹페이지의 헤더에 설정되며, 스크립트나 스타일 등 외부 리소스의 로드를 제한하거나, 특정 도메인에서만 리소스를 로드하도록 설정할 수 있다.

HttpOnly 및 Secure 속성 설정: 쿠키를 사용할 때, 중요한 쿠키에 대해서는 HttpOnly와 Secure 속성을 설정해야 하는데, HttpOnly 속성은 자바스크립트에서 쿠키에 접근하지 못하도록 하고, Secure 속성은 HTTPS 연결에서만 쿠키를 전송하도록 설정