인터넷 사용자의 클라이언트(로컬)에 저장되는 특정 웹 사이트에 대한 접속 정보를 저장하고 있는 작은 파일. 예를 들어 인터넷 접속 시 매번 아이디와 비밀번호를 입력하지 않아도 자동으로 입력되는 것이다.
서버 측에서 저장하고 관리한다. 하나의 브라우저 당 한 개의 세션 객체가 생성된다. 즉, 같은 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유한다. 클라이언트와 서버의 연결 상태를 유지하는 데에 사용된다.
쿠키는 클라이언트에 저장되어 특정 웹 사이트에 대한 접속 정보를 저장합니다. 세션은 클라이언트와 서버의 연결 상태를 유지하는 데에 사용됩니다. 하나의 브라우저 당 한 개의 세션 객체가 생성되어, 같은 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유한다.
쿠키는 클라이언트에 저장되고, 세션은 서버 측에서 저장하고 관리한다는 차이가 있습니다. 따라서 쿠키는 서버의 자원을 사용하지 않고, 세션은 요청이 많을 시 서버에 부하가 심합니다. 그러나 쿠키는 정보를 직접 저장하고 요청을 보낼 수 있기 때문에 보안 면에서는 세션이 더 우수합니다. 만료 시간의 차이
로는 쿠키는 지정한 만료 시간동안 저장되므로 브라우저를 종료해도 정보가 남아있지만, 세션은 브라우저 종료 시 만료시간에 상관없이 삭제된다는 차이가 있습니다.
쿠키를 지워도 브라우저에 로그가 남기 때문에 보안에 취약할 수 있다.
1) redis (인메모리) 사용 시 블랙리스트 처리가 되어 토큰을 만료시켜 다시는 사용할 수 없도록 하는 방식으로 로그아웃을 실행한다.
2) web-security-config의 SecurityFilterChain 내에 HttpCSRF 설정 시 해당 공격을 막도록 설정할 수 있다. (CSRF : 해커의 요청대로 사용자가 요청을 보내도록 하는 공격)
본인 코드에서 쿠키 / 세션 중 어디에 담았고, 왜 그 방식을 채택했는지 답변할 줄 알아야 한다.