본문 바로가기

S-DEV/웹 해킹 보안과 공격

XSS(Cross-Site Scripting)

728x90

• Javascript

- 객체 기반의 스크립트 언어

- HTML과 CSS 각각 웹 페이지의 내용과 디자인을 담당하는 정적인 언어

- Javascript는 웹 페이지를 동적으로 변경해 주는 동적 언어

 

• Cookie 

- HTTP 프로토콜은 Connectionless 와 Stateless의 특징을 가지고 있어 HTTP 프로토콜에서 클라이언트를 기억하는 등의 상태 유지를 위해 Cookie를 사용한다.

(Connectionless: 요청 & 응답 이후에 연결을 종료하는 특징, Stateless : 연결 종료 후 상태 정보를 저장하지 않는 특징)

- Key 와 Value로 이뤄지며 서버가 클라이언트에 쿠키 값을 발급하면 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 함께 전송한다.

- 서버는 클라이언트 요청에 포함된 쿠키 값을 통해 클라이언트를 구분하고 클라이언트는 쿠키 값을 로컬에 저장한다.

 

• Session

- Session은 Cookie와 다르게 사용자 정보 값을 브라우저에 저장하는게 아니라 서버에서 Session ID를 발급하여 통신 종료 혹은 Session TimeOut 전까지 클라이언트의 정보를 유지한다.

- Session ID는 유추하기 어려운 랜덤한 문자열로 되어있다.

 

• XSS

- Client-Side 취약점 중 하나로 게시판, 공지사항 등에 악성 스크립트를 삽입하여 일반 사용자의 브라우저에서 해당 스크립트를 실행시킬 수 있다. 이를 통해 세션 및 쿠키를 탈취하거나 악의적인 페이지로 Redirect 할 수 있다.

 

- Reflected XSS

악성 스크립트가 URL에 삽입되는 방식

 

- Stored XSS

악성 스크립트가 게시글, 댓글 등 서버에 삽입되는 방식

 

- DOM XSS

악성 스크립트가 URL Fragment에 삽입되는 방식

 

- Universal XSS

브라우저 혹은 브라우저의 플러그인에서 발생하는 XSS

 

• Secure Coding

- 입력 값 필터링 및 치환

xss공격에 자주 사용되는 특수 문자 등이 들어오면 공백으로 치환하는 등의 방법을 사용한다.(확실한 방법은 아님)

 

- HTML Entity

< 와 > 같이 HTML로 인식되는 특수문자들을 HTML Entity로 치환해 주는 방법을 사용한다.

< 는 &lt 로 치환, >는 ㅎ&gt; 로 치환

 

- Anti-XSS Library

XSS 방어를 위해 여러가지 종류의 라이브러리들이 있으며 라이브러리를 사용하여 XSS 방어하는 방법을 사용한다.

 

- CSP(Content-Security Policy)

웹 페이지에 있는 컨텐츠들이 서버에서 의도한 콘텐츠가 맞는지 확인하기 위해서 사용되는 보호 기법이다.

 

 

'S-DEV > 웹 해킹 보안과 공격' 카테고리의 다른 글

Command Injection  (0) 2023.07.22
SQL Injection  (0) 2023.07.21
웹 해킹이란?  (0) 2023.07.21