1. 웹 서버가 클라이언트를 구별하는 방법

 

HTTP 프로토콜로 웹 서버와 통신할 때에는 웹 서버에 명령을 내리기 위해 GET, POST와 같은 메소드와 자원의 위치를 가리키는 URL 등이 포함되어 있습니다. 이외에도 헤더를 통해서 웹 서버에게 요청을 보내고, 웹 서버는 헤더를 일고 클라이언트에게 결과 값을 반환합니다. 이때, 헤더에는 클라이언트의 정보와 요청의 내용을 구체화하는 등의 데이터가 포함되는데, 클라이언트의 인증 정보 또한 포함이 될 수 있습니다.

 

1. 쿠키(Cookie)

 

HTTP 프로토콜의 Connectionless Stateless 특성으로 웹 서버는 클라이언트를 기억할 수 없습니다.

Connectionless 하나의 요청에 하나의 응답을 한 후 연결을 종료합니다.
Stateless 통신이 끝난 후 상태 정보를 저장하지 않는 것을 의미합니다.

 

Connectionless, Stateless 특성을 갖는 HTTP에서 상태를 유지하기 위해서 탄생했습니다. 쿠키는 key value로 이뤄진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면, 클라이언트는 서버에 요청을 보낼 때마다 쿠키를 같이 전송합니다.

 

 

2. 세션(Session)이란

 

웹 통신에서 클라이언트가 쿠키를 변조해 서버에 요청을 보낼 수 있습니다. 쿠키에 인증 상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없게 하기 위해 세션(Session)을 사용합니다. 세션은 인증 정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 키(유추할 수 없는 랜덤한 문자열)를 만들어 클라이언트에 전달하는 방식으로 작동합니다. 해당 키를 일반적으로 Session ID라고 합니다. 브라우저는 해당 키를 쿠키에 저장하고 이후에 HTTP 요청을 보낼 때 사용합니다. 서버는 요청에 포함된 키에 해당하는 데이터를 가져와 인증 상태를 확인합니다.

 

 

3. JWT 토큰이란

 

인증에 필요한 정보들을 담은 후 비밀키로 서명한 토큰으로, 인터넷 표준 인증 방식이다. 공식적으로 인증&권한허가 방식으로 사용된다.

 

-JWT 구조

 

 

header

alg : Signature에서 사용하는 알고리즘

typ : 토큰 타입

 

payload

사용자 정보의 한 조각인 클레임이 들어 있다.

 

Signature

헤더와 페이로드의 문자열을 합친 후에, 헤더에서 선언한 알고리즘과 key를 이용해 암호화한 값이다.

'기술 노트 > security' 카테고리의 다른 글

[WEB]CSRF란  (0) 2024.08.12
[WEB]XSS 정리  (0) 2024.08.09
OWASP란 무엇 인가?  (0) 2024.08.05
민감 데이터 노출 간단히 정리  (0) 2024.06.04
SQL Injection을 하기 위한 간단한 정리  (0) 2024.05.13

+ Recent posts