01. HTTP의 특징
- 비연결지향(Connectionless)
- HTTP는 클라이언트의 Request를 통해 서버에 데이터 요청, 서버의 Response를 통한 데이터 주는 형태로 이루어져있다. 이 과정이 끝나면 연결을 끊는 특성이 있는데, 현재 HTTP 1.1 번전에서는 connection을 계속 유지하고 요청에 재활용하는 기능이 추가되었다. HTTP header에 Keep-alive 옵션을 주어 커넥션을 재활용하게 한다. HTTP 1.1 버전에서는 Default 옵션이다.
- 상태없음(Stateless)
- Connection을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성이 있다.
02. 쿠키와 세션
- HTTP의 특징을 보완하기 위해서 쿠키와 세션을 사용하게 되었다.
==> 비연결지향이라는 특성으로 서버 리소스 낭비가 줄어드는 반면 통신할 때마다 새로 커넥션을 만들기 때문에 클라이언트 측면에서 상태 유지를 위해 통신할 때마다 어떤 절차를 가져야 하는 단점이 생긴다.
03. 쿠키란?
- 하이퍼 텍스트 기록서의 일조이다. 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 의미한다.
- 기록 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다.
- 쿠키는 Key와 Value로 저장된다.
- 쿠키에는 이름, 값, 만료 시간, 경로 정보 등ㅇ이 들어있다. 클라이언트의 상태 정보를 로컬에 저장했다가 요청할 때 참조된다.
- 서버 측에서 만료 시간을 지정하여 정해진 시간동안 데이터를 유지할 수 있다. 보통 로그인 상태 유지에 활용된다.
04. 세션 쿠키(Session Cookie)와 지속 쿠키(Persistent Cookie)
- 세션 쿠키(Session cookie)
- 웹 브라우저가 열려 있는 동안에만 유효한 쿠키
- 사용자가 웹사이트를 방문하고 브라우저를 닫을 때까지 유지되며, 브라우저가 종료되면 자동으로 삭제된다.
- 주로 인증 상태를 유지하기 위해 사용되며, 사용자가 로그인한 후에 세션 쿠키를 통해 로그인 상태를 유지하면서 서비스를 이용할 수 있게 된다.
- 보안 측면에서는 상대적으로 안전하며, 사용자의 개인 정보를 보호하는 데 더 적합하다.
- 지속 쿠키 (Persistent Cookie 또는 Permanent Cookie)
- 지속 쿠키는 사용자가 지정한 만료일까지 또는 사용자가 직접 삭제할 때까지 유지되는 쿠키
- 사용자의 브라우저가 종료되어도 계속해서 존재하며, 만료 기간을 설정하여 원하는 기간 동안 유지할 수 있다.
- 사용자의 로그인 정보를 기억하거나 개인화된 사용자 경험을 제공하는 데 사용된다.
- 보안 측면에서는 덜 안전할 수 있으며, 악의적인 사용자가 쿠키를 훔쳐서 개인 정보를 탈취하는 위험이 있다.
==> 세션 쿠키와 지속 쿠키는 각각 다른 목적과 지속성을 가지고 있으므로 웹 개발자들은 이러한 차이를 이해하고 적절한 용도에 적용하여 웹사이트의 기능과 보안을 유지해야 한다.
04. 세션이란?
- 클라이언트의 상태 정보를 저장하는 기술로 논리적인 연결을 세션이라고 한다.
- 웹 서버에 클라이언트에 대한 정보를 저장하고 클라이언트를 구분할 수 있는 ID를 부여한다. (Session ID)
- 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버측에서 관리한다. 서버에서는 클라이언트를 구분하기 위하여 세션 ID를 부여하고 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때 까지 인증 상태를 유지한다.
- 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안면에서 좋지만 사용자가 많아질 수록 서버 메모리를 많이 차지하게 된다. 즉, 동시접속자 수가 많은 웹 사이트인 경우 서버에 과부하를 주게되므로 성능 저하의 요인이 된다.
05. 쿠키 vs. 세션
- 저장 위치
- 쿠키 : 브라우저에 메모리 또는 파일에 저장
- 세션 : 서버 메모리에 저장
- 보안
- 쿠키 : 로컬에 저장되므로 파일로 저장될 경우 탈취, 변조될 위험이 있다. Req,Res에서 스나이핑 당할 위험이 있어 보안이 비교적 취약하다.
- 세션 : 클라이언트 벙조 자체는 서버에 저장되어 있으므로 비교적 안전하다.
- 유지
- 쿠키 : 세션 쿠키와 지속 쿠키에 따라 관리할 수 있다.
- 세션 : 서버에서 만료 시간을 정해서 지워버릴 수 있다. But 세션 쿠키에 세션 아이디를 정한 경우 브라우저 종료시 세션 아이디가 날아갈 수 있으므로 조심해야 한다.
- 속도
- 쿠키 : 쿠키 자체에 정보가 있기 때문에 서버에 요청시 헤더를 바로 참조하면 된다. 속도에서 유리하다.
- 세션 : 제공받은 세션 아이디를 이용해서 서버에서 다시 데이터를 참조해야 하므로 속도가 비교적 느릴 수 있다.
'다양한 Dev. > 기본 정리' 카테고리의 다른 글
2023.09.30 - Swagger(Nest.js) 작성 방법 (0) | 2023.09.30 |
---|---|
2023.09.26 - Swagger(Nest.js) (0) | 2023.09.26 |
2023.07.28 - Docker (0) | 2023.07.28 |
2023.06.07 - 명령어 정리 (feat. cmd, vi) (0) | 2023.06.07 |
2023.06.01 - HTTPS란? (0) | 2023.06.01 |