쿠키와 세션의 차이점은 무엇일까?

hoon·2023년 3월 21일
0

쿠키와 세션은 웹 애플리케이션에서 사용되는 데이터 저장 방식이다. 두 가지 방식 모두 서버와 클라이언트 간의 상태를 유지하기 위해 사용된다. 하지만 쿠키와 세션은 목적과 동작 방식에서 차이가 있다.

쿠키란?

쿠키는 클라이언트 측에서 사용되는 작은 데이터 파일이다. 쿠키는 클라이언트 측에 저장되며, 서버에서 응답으로 전송되어 클라이언트의 브라우저에 저장된다. 그리고 나서 클라이언트가 같은 서버를 다시 방문할 때마다 쿠키는 클라이언트에서 서버로 전송된다. 이를 통해 서버는 클라이언트의 브라우저에서 이전 상태를 기억하고 그 정보를 사용하여 사용자에게 맞춤형 경험을 제공할 수 있다.

쿠키의 세부 동작 방식

쿠키는 Set-Cookie라는 명령어로 데이터를 넣어서 응답을 주게되면 파라미터에 대한 정보들을 웹브라우저에서 자동으로 저장하고 있다가 호스트가 동일한 주소에 다시 request를 하게 되면 해당 정보를 쿠키라는 이름으로 자동으로 넣어서 보내준다.

로그인이 되는 시나리오를 생각해 보자

로그인 아이디와 패스워드를 서버에 요청할때 정상적으로 로그인이 된다면 아이디와 패스워드를 Set-Cookie로 HTTP response body에 넣어서 보내준다. 그러면 웹브라우저는 Set-Cookie로 지정된 데이터를 웹브라우저 내에 저장하고 동일한 host에 또다른 요청이 있을때는 해당 데이터를 Cookie:id=chae; pw=1234 로 자동으로 보내준다.

따라서 한번 로그인 해서 Set-Cookie를 해놓으면 그 다음부터 계속 쿠키정보가 자동으로 가고 서버는 알맞은 reponse를 해준다. ex) HTTP/1.1 200 OK

이렇게 하면 로그인 된 상태가 계속 이어질 수 있다.

하지만 이렇게 하면 문제가 있는데 Request와 Response는 TCP를 확인해보면 어떤 데이터가 있는지 확인할 수 있는데 해커가 중간에서 이 데이터를 탈취할 수도 있다는 뜻이다. 보안적으로 위험할 수 있다. 이러한 취약점을 보안 하기 위한 것이 세션이다.

세션이란?

세션은 서버 측에서 사용되는 데이터 저장 방식이다. 클라이언트가 서버에 요청을 보내면 서버는 세션 ID를 생성하고 클라이언트에게 전달한다. 클라이언트는 이 세션 ID를 쿠키로 저장하고 서버로 요청을 보낼 때마다 이 세션 ID를 서버에 제공한다. 이를 통해 서버는 클라이언트의 상태를 추적하고 필요한 정보를 저장할 수 있다. 세션은 보안성이 높은 쿠키와 같은 기능을 제공할 수 있으며, 서버 측에서 데이터를 저장하기 때문에 보안에 강하다.

세션 세부 동작 방식

세션역시 동일하게 쿠키처럼 Set-Cookie와 Cookie를 가지고 사용하지만 차이점은 id와 pw 데이터를 서버에 보내면 서버단에서 id와 pw가 정상적으로 로그인이 된 상태라면 해당 사용자에 대한 암호화된 기법으로 임의의 문자열을 만들어서 서버단에 저장한다.

암호화된 문자열을 파라미터와 함께 Set-Cookie로 클라이언트에 보낸다. 그 다음에는 쿠키와 같이 동일한 host에 또다른 요청이 있을때는 해당 데이터를 자동으로 보내준다.

쿠키는 id,pw를 TCP만 확인해보면 누구나 확인할 수 있지만 세션의 경우 암호화된 문자열을 중간에 탈취당한다고 하더라도 id,pw를 알 수 없고 서버 내부 저장소에서만 확인이 가능하다.

정리

쿠키는 클라이언트에 저장되기 때문에 보안에 취약할 수 있다. 클라이언트는 쿠키를 삭제하거나 수정할 수 있으며, 쿠키의 내용이 탈취될 가능성도 있다. 반면, 세션은 서버 측에서 관리되기 때문에 보안성이 높다. 하지만 세션을 사용하면 서버의 부하가 증가할 수 있고, 세션 ID를 관리하는 추가 작업이 필요하다.

따라서 보안성이 중요한 경우에는 세션을 사용하는 것이 좋으며, 간단한 사용자 정보나 선호도와 같은 정보를 저장할 경우에는 쿠키를 사용하는 것이 적절하다.

profile
프론트엔드 학습 과정을 기록하고 있습니다.

0개의 댓글

관련 채용 정보