사용자가 특정한 웹사이트에 방문할 때, 사용자 컴퓨터에 저장하는 기록 파일입니다.
특징은 서버의 자원을 전혀 사용하지 않습니다. 보통은 사용자의 브라우저 쿠키에 저장됩니다.
ex) 로그인 후 팝업 '아이디와 비밀번호를 저장하시겠습니까?'
한 명의 사용자(브라우저)의 상태를 유지하는 기술입니다. 서버가 클라이언트에게 고유한 세션 ID를 부여하면, 클라이언트는 접속할 때마다 세션 ID와 함께 요청합니다.
ex) 웹사이트에 한 번 로그인 하면, 다른 페이지로 이동해도 계속 접속 상태가 유지됩니다.
만약 세션 ID를 다른 클라이언트에게 탈취당하면 다른 사람이 자신의 행세를 할 수 있습니다.세션 ID를 탈취할 때는 다른 정보도 함께 많이 탈취당할 수 있기 때문에, 별도의 확인 과정을 한 번 더 거치게 한다거나 별도의 토큰을 발급해주는 과정을 추가로 포함합니다.
서버에서 가지고 있는 객체로, 특정 사용자의 로그인 정보를 유지하기 위해 사용할 수 있습니다. 예를 들어 우리가 웹사이트에 로그인 한 뒤에, 서버에서는 세션 ID에 따른 회원 ID 정보를 기록합니다. 클라이언트는 해당 세션을 계속 유지합니다.
ex) 메일함에 접속할 때도 세션 ID를 서버에 전송한다.
다시 말해 세션은, 자신이 누구인지를 서버에 알려주는 역할을 수행합니다.
장점
클라이언트에게는 세션 ID(회원 식별 목적)을 제공하고, 회원에 대한 중요한 정보를 서버가 가지고 있습니다.
민감한 데이터를 클라이언트에 직접적으로 보내지 않죠.
단점
악의적인 공격자가 세션 ID를 탈취하여 사용자인 척 위장할 수 있습니다. 그리고 웹 서버에 세션 정보를 기록하고 있어야 하므로, 접속자가 많을 때 서버에 메모리 부하가 존재할 수 있습니다. 세션은 보안 측면에서 그리 좋지 않은 수단입니다.
현재는 세션 대신 JWT를 통해 액세스 토큰을 발급하여 로그인을 유지하는 방식을 대부분의 서비스에서 사용합니다.