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 |