HTTP Session
- HTTP Session은 웹 어플리케이션에서 사용자의 정보를 저장하는 기술이다.
- 사용자의 세션은 웹 애플리케이션에 접속한 후, 일정 시간 동안 유지되는 정보
- 특징
- HTTP 프로토콜은 Stateless한 특성을 가지기 때문에 사용자가 다시 요청을 보낼 때 마다 사용자 정보를 매번 다시 전송해야 한다. HTTP Session은 이러한 문제를 해결하기 위해 사용자 정보를 서버측에서 저장하고 관리하는 세션 ID를 받아 발급한다.
- HTTP Session은 쿠키(Cookie)를 사용하여 구현된다.
- HTTP Session은 사용자 로그인 정보를 관리 할 때 사용하며, 사용자가 다시 접속하여도 유지된다.
- HTTP Session은 서버에서 관리되므로 사용자가 임의로 세션 정보를 조작할 수 없다. 해당 값은 랜덤한 값으로 생성되며, HTTPS를 통해 암호화 된다.
HTTP Cookie
- 웹 브라우저와 웹 서버 간에 상태 정보를 유지하기 위한 기술이다. 쿠키는 브라우저가 이를 로컬에 저장하고 필요할 때 마다 서버에 전송하여 사용자 상태 정보를 유지한다.
- 쿠키는 HTTP 헤더에 Set-Cookie와 같은 헤더를 통해 서버에서 클라이언트로 전송된다.
- 쿠키는 키-값쌍으로 이루어져있으며, 이름, 값, 유효 기간, 도메인, 경로 등의 정보를 포함한다.
- 특징
- 쿠키는 클라이언트 측에서 저장된다. 따라서, 서버가 클라이언트의 상태 정보를 확인하려면 쿠키를 클라이언트에게서 전송 받아야 한다.
- 쿠키는 유효시간을 가지고 있다. 유효 기간이 지나면, 쿠키는 삭제된다.
- 쿠키는 보안 문제가 있을 수 있다. 쿠키에 민감한 정보를 저장하는 경우, HTTPS와 같은 보안 프로토콜을 사용하여 암호화해야 한다.
- 쿠키는 브라우저에서 관리되기 때문에, 브라우저에서 쿠키를 삭제하거나 다른 브라우저에서 접속하는 경우에는 쿠키를 공유할 수 없다.
- 쿠키는 특정 도메인과 유효시간 등을 지정해야 하며, 크기에 제한이 존재한다.
HTTP header를 통한 인증
- 서버와 클라이언트 간의 인증을 HTTP헤더를 통해 수행하는 방식
- HTTP Basic, HTTP Digest, OAuth와 같은 프로토콜을 통해서 구현되는 것이 일반적이다.
- 그 외에는 특정 헤더에 Token을 넣어서 사용자를 인식하고 인증한다.
- REST Client를 사용하는 모바일 쪽에서 많이 사용하는 방식이다.
- 모바일은 자체적으로 보안적인 공간을 가질 수 있기 때문이다.