본문 바로가기
카테고리 없음

XSS 란?

by cook_code 2023. 12. 14.
반응형

XSS (Cross-Site Scripting)

xss란 sql injection과 함께 웹 상에서 가장 기초적인 취약점 공격 방법 중 하나로,
권한이 없는 사용자가 악의적인 용도로 웹 사이트에 스크립트를 삽입하는 공격 기법을 말합니다.
다른 웹 사이트와 정보를 교환하는 식으로 작동하므로 사이트 간 스크립팅이라고 부릅니다.

xss는 웹 애플리케이션이 사용자로부터 입력받은 값을 제대로 검사하지 않고 사용할 경우 사용되며,
공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하세 되어
의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취합니다.

xss는 자바스크립트를 사용하여 공격하는 경우가 가장 많고, 사용자의 세션을 공격자의 서버로 전송해서 탈취하거나
악성코드가 있는 페이지로 리다이렉트 시키는 방식으로 공격이 주로 행해집니다.

Reflected XSS

  • url 의 변수부분처럼 스크립트 코드를 입력하는 동시에 결과가 바로 전해지는 공격기법
  • 공격자가 HTTP 요청에 악성 콘텐츠를 주입하면 그 결과가 사용자에게 반사되는 형태

Stored XSS

  • 가장 일반적인 XSS 공격 유형
  • 사용자가 게시물을 열람 시, 공격자가 입력해놓은 악성 스크립트가 실행되어 사용자의 쿠키 정보가 유출되거나, 악성 스크립트가 기획한 공격에 당함

XSS 대응 방안

사용자의 입력에 대해서는 무조건 의심을 하고 검증을 하는 작업이 필요 합니다.
입력 데이터에 대한 길이, 문자, 형식 및 사업적 규칙 유효성을 검사해야 합니다.

1. 입력값 제한

2. 입력값 치환

태그 문자 등 위험한 문자 입력시 문자 참조로 필터링하고, 서버에서 브라우저로 전송 시 문자를 인코딩합니다.
HTML 엔터티는 대부분의 인터프리터 (브라우저)에서 특수한 의미를 가지지 않으며, 단순한 문자로 처리됩니다.
이렇게 인코딩하면 사용자는 스크립트가 문자 그대로 보이지만 HTML 문서에서는 일반 문자로 인식되고 스크립트로 해석되어 실행되지는 않습니다.

3. 스크립트 영역에 출력 자제

이벤트 핸들러 영역에 스크립트가 삽입되는 경우, 보호기법들을 우회할 수 있기 때문에 사용자의 입력을 출력하는 것을 최대한 자제해야 합니다.

4. 라이브러리 이용

XSS를 막아주는 Anti XSS 라이브러리를 사용합니다.

https://easymedia.net/Culture/EasyStory/?no=170&mode=view&IDX=1165&p=1

반응형