ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [신입 개발자 면접] Session과 Cookie | 초코더
    IT 상식/CS기초상식 2019. 12. 29. 15:42

    오늘은 세션과 쿠키의 차이에 대해 공부해보겠습니다.

     

    Session

    세션이란 방문자가 웹에 접속해서 웹 브라우저를 종료하는 시점까지를 뜻합니다.(즉 웹브라우저를 하나 여는 순간 세션이 하나 생겨나고, 웹브라우저를 종료하면 그 세션이 삭제됩니다.) 세션에 관련된 데이터는 서버에 저장되기 때문에 대량의 데이터가 저장 가능합니다. 

    HTTP는 기본적으로 비연결지향 프로토콜이기 때문에 이전 상태를 저장하지 않습니다. 만약에 세션을 유지하지 않게 되면 웹사이트에 요청할 때마다 로그인을 해주어야 합니다. 하지만 세션을 사용함으로서 한번만 로그인 하면 됩니다.

     

    주로 로그인 정보유지에 쓰입니다. (한번 로그인하면 요청을 보낼 때마다 로그인을 할 필요가 없어짐.)

     

    세션아이디는 주로 쿠키로 전달됩니다.

     

    원리

    1. 웹사이트에 처음 접속합니다.

    2. 웹사이트를 하나 열면 서버는 세션 ID를 하나 생성하여 쿠키 값으로 만들고 Set Cookie라는 헤더를 통해서 웹브라우저에 전송합니다.

    3. 웹브라우저는 이 쿠키값을 저장해 두었다가 웹 서버에 무언가 요청할 때마다 쿠키 헤더를 통해서 세션을 보냅니다.

    4. 서버는 요청을 받을 때마다 세션 ID를 확인하고, 이전에 로그인했던 것이 확인 되었을 때만 그에 알맞는 정보를 보내줍니다.

     

    Cookie

    사용자 정보를 클라이언트 로컬에 저장하는 것입니다. 브라우저를 종료해도 사용자의 하드드라이브에 저장되기 때문에 사라지지 않습니다. 직접 삭제하거나 만료되어야 삭제 됩니다. 

    쿠키는 클라이언트 pc에 저장되는 정보기 때문에 다른 사용자에 의해서 임의로 변경이 가능하므로 보안성이 낮습니다.

     

    주로 자동로그인(쿠키는 개인 아이디, 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써 저장되어 해당 웹서버에 재방문 할 시에 자동으로 로그인이 됨.), 팝업에서 "오늘 더이상 이창을 보지 않음", 쇼핑몰 장바구니 등에 쓰입니다.

     

    Session Cookie 사용 이유

    - 현재 우리가 인터넷에서 사용하고 있는 HTTP프로토콜은 연결 지향적인 성격을 버렸기 때문에 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지며 이전 페이지와 현재 페이지 간의 관계가 지속되지 않는다.(HTTP프로토콜은 비연결지향) 이에 따라 HTTP프로토콜을 이용하게 되는 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.

     

    Q. 보안성이 낮은 Cookie 대신 Session을 사용하면 되는데 안하는 이유?

    A. 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 감

     

    Session과 Cookie차이

    저장위치, 쿠키는 클라이언트에 파일로 저장 - 세션은 서버에 저장

    보안, 쿠키는 보안에 취약 - 세션은 쿠키를 이용해서 세션id만 저장하고 그것으로 구분해 서버에서 처리하기 때문에 보안성 높음

    라이프 사이클, 쿠키는 브라우저를 종료해도 사용자가 삭제할 때까지 파일로 남아있음 - 세션은 브라우저가 종료되면 삭제됨

     

    * Session, Cookie는 캐시와 다르다!

    캐시는 이미지나 css, js파일 등이 사용자의 브라우저에 저장 되는 것이다. 이를 이용해 자워닝 아껴지는 것, 한번 캐시에 저장되면 브라우저를 참고하기 때문에 서버에서 변경이 되어도 사용자는 변경되지 않게 보일 수 있는데 이런 부분을 캐시를 지워주거나 서버에서 클라이언트로 응답을 보낼 때 header에 캐시 만료시간을 명시하는 방법등을 이용할 수 있다.

    댓글

Designed by Tistory.