본문 바로가기

Network, Security

쿠키(Cookie)와 세션(Session) 차이점

쿠키(Cookie)

쿠키는 웹 브라우저에서 저장할 수 있는 작은 데이터이다. 즉, 클라이언트에서 갖고있는 데이터이다. 개발자가 프로그램에 필요한 정보를 임시적으로 저장할 수 있다. 쿠키 값은 만료날짜를 지정하여 언제까지 데이터가 유지될 지를 결정할 수 있다. 쿠키는 Key-Velue 쌍으로 이루어져 있다. 이러한 쿠키는 클라이언트 측에서 저장하고 있다가 웹 서버 접속 시 저장된 쿠키값을 포함하여 통신을 한다. 때문에 서버측의 부하를 덜 수 있다. 대표적으로 쿠키가 사용될 때는 사이트 접속 시 '오늘 하루 열지 않기'를 체크할 때 이다. 이때 해당 버튼을 클릭하면 오늘 하루 기간의 쿠키 값이 생성되어 브라우저에 저장된다. 그러면 하루 기간 동안 저장된 쿠키값을 웹 서버 접속 때마다 보내주어 해당 팝업이 안보이게 된다.

웹브라우저에 저장된 쿠키 값

 

세션(Session)

세션은 HTTP가 TCP 프로토콜이기 때문에 필요하다. TCP는 Connection Oriented(연결 지향 통신)을 사용한다. 연결 지향 통신은 특정 정보를 주고 받으면 연결이 된 것으로 착각하게 된다. 이 때 웹 서버와 웹 브라우저가 서로 약속된 문자열을 보내야 하는데 이것이 세션이다. 만약 로그인 사용자의 세션 정보가 갈취되면 세션 로그인 과정이 없어도 연결된 것으로 인식하게 되는 것이다. 즉, 통신 중 클라이언트와 서버가 연결된 상태를 유지할 수 있도록 해주는 것이 세션이다. 세션은 클라이언트가 서버에 접속 요청 시 해당 클라이언트의 세션값을 서버가 생성하고 저장하여 클라이언트에게 전송한다. 그러면 클라이언트는 응답 헤더에 받은 세션 값을 포함하게 된다. 이 세션 값은 브라우저 종료 시 삭제되어 다시 접속하면 웹 서버에서 새로운 세션 값을 생성하고 보내주는 형태로 연결 상태를 관리한다.

 

쿠키값으로 접근 권한 관리를 하면 안되는 이유

쿠키값은 클라이언트의 웹 브라우저에 저장된 데이터이다. 즉, 클라이언트가 임의로 변경할 수 있다는 것인데, 이 떄 쿠키값으로 권한 관리를 한다면 악의적인 사용자가 쿠키값을 수정하여 더 상위 권한 또는 다른 사람의 권한을 이용하여 접근할 수 있는 것이다.

 

Cookie와 Session의 차이점

구분 Cookie Session
저장 위치 클라이언트 서버
저장 형태 Text Object
종료 시점 쿠키 저장 시에 종료 시점을 설정하여 종료 시점이 되면 삭제된다. 종료 시점을 설정하지 않으면 세션이 종료될 때 쿠키값도 삭제된다. 정확한 종료 시점을 알 수 없다. 민감한 페이지, 보안이 필요한 페이지의 경우 세션 유지에 시간 제한을 두는 경우도 있다. 예로 은행 업무 사이트 접속 시 로그인 상태 유지 시간이 있다.
용량 개수와 용량에 제한이 있다. 용량 제한이 없다.

 

반응형