누군가에게 질문을 받았다 Cookie랑 Session에 대해 말해보세요
Spring으로 서버 개발을 하면서 Session에 사용자정보를 저장하는 역할로 사용은 해봤지 정확하게 이녀석들이 어디에 있고 뭐하는애들인지는 평소에 생각을 하지않아.
확실한 답변을 하지 못해 정리하였다.
Cookie?
- 클라이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
- 위와 같이 클라이언트에 저장을 해둘 수 있기 때문에 우리는 Cookie를 “아이디와 비밀번호를 저장하겠습니까?” 라는 물음에 예라고 답하면 쿠키에 사용자 로그인정보를 저장해두는 예가 있다.
- 사용자가 따로 요청을 하지 않아도 브라우저가 서버 요청값에 Cookie를 포함하여 보내준다.
Session?
- Cookie와 같은 기반이지만 Session은 서버에서 발급하고 서버에서 관리를 한다.
- 사용자정보를 서버에 두어 보안적으로는 좋지만 사용자가 많아질수록 성능저하의 우려가 있다.
- 서버에서 SessionID를 부여하여 클라이언트가 서버에 접속하여 브라우저의 접속을 끊을 때까지 인증상태를 유지한다.
Cookie, Session 특징 비교
Cookie | Session | |
---|---|---|
저장위치 | 클라이언트 | 서버 |
보안 | 취약 | 강함 |
라이프 | 브라우저 종료되도 유효기간까지 남아있음 | 브라우저 종료시 삭제함 |
속도 | 빠름 | 느림 |
용량 | 제한있음 | 제한없음 |