
🍪 쿠키(Cookie): 사용자가 웹 사이트를 방문할 때마다 이전에 방문했던 정보를 기억하는 일종의 데이터 조각들이다. 즉, 사용자의 데이터를 클라이언트에 저장하는 것이다.
userId=user-1321;userName=sparta 와 같이 문자열 형식으로 존재하며 쿠키 간에는 세미콜론(;) 으로 구분된다.쿠키의 경우 서버를 재시작하거나 새로고침을 하더라도 로그인이 유지된다.
왜 유지되나요?
1) 쿠키 설정:
사용자가 로그인하면, 서버는 Set-Cookie 헤더를 통해 로그인 상태 정보를 포함한 쿠키를 브라우저에 저장한다. 이 쿠키는 서버가 아닌 브라우저에 보관되기 때문에 서버가 재시작되거나 페이지가 새로고침되더라도 브라우저에 저장된 쿠키는 그대로 유지된다.
2) 쿠키 전송:
이후 사용자가 페이지를 요청할 때마다, 브라우저는 자동으로 쿠키를 서버로 전송한다. 서버는 이 쿠키를 통해 사용자가 누구인지 식별하고, 로그인 상태를 확인할 수 있다.
3) 유효 기간:
쿠키는 만료 시간을 설정할 수 있기 때문에, 설정된 기간 동안 쿠키는 브라우저에 저장된다. 예를 들어, 로그인 상태를 30일 동안 유지하려면, 서버에서 만료 시간이 30일인 쿠키를 설정한다.
이는 사용자에게는 편리하지만, 서버의 입장에서는 보안 문제가 발생할 수 있다. 왜냐하면 쿠키가 조작되거나 노출된다면 해당 권한을 탈취당해, 악의적인 공격을 받을 수 있기 때문이다.
그렇다면, 쿠키에는 어떤 정보를 담아야 할까요?
바로, 사용자가 누구인지 확실하게 구분할 수 있는 정보를 넣어주어야 할 것이다. 예를 들면 사용자의 id나 닉네임과 같은 정보이다.
🔒 세션(Session): 쿠키를 기반으로 구성된 기술입니다. 단, 클라이언트가 마음대로 데이터를 확인 할 수 있던 쿠키와는 다르게 세션은 데이터를 서버에만 저장해 쿠키보다 보안성이 뛰어나다.