쿠키와 세션
놀이공원의 자유이용권 손목 띠와 안내 데스크의 회원 장부처럼, 인터넷에서 '내가 누구인지' 기억해 주는 도구예요.
정의 웹사이트가 사용자를 기억하고 상태를 유지하기 위해 정보를 나누어 보관하는 방식이에요. 쿠키는 사용자 컴퓨터(브라우저)에 직접 저장되는 작은 쪽지이고, 세션은 서버의 비밀 금고에 정보를 두고 사용자에게는 입장 번호표만 건네주는 방식이에요.
손목 도장과 VIP 장부: 왜 기억이 필요할까요?
웹의 기본 통신 규약인 HTTP는 원래 기억상실증에 걸린 사람처럼 동작해요. 방금 로그인 버튼을 눌렀어도, 다음 페이지로 이동하면 서버는 '당신이 누구였더라?' 하고 까맣게 잊어버려요. 페이지를 넘길 때마다 아이디와 비밀번호를 계속 다시 칠 수는 없잖아요.
그래서 웹사이트는 내가 누구인지 표시해 둘 도구가 필요해요. 이때 브라우저에 가벼운 기록 쪽지를 남겨두는 기술이 쿠키(Cookie)예요. 마치 놀이공원에 재입장할 때 보여주는 손등 도장처럼, 브라우저가 매번 웹 서버에 쪽지를 내밀며 '저 아까 로그인한 사람이에요'라고 알려주는 거예요.
하지만 중요한 비밀번호나 개인정보를 사용자 컴퓨터에 그대로 적어두면 누군가 훔쳐볼 위험이 커요. 그래서 중요한 정보는 서버가 직접 비밀 장부에 기록하고 관리하는데, 이 방식을 세션(Session)이라고 불러요.
쿠키와 세션, 어떻게 역할을 나눌까요?
쿠키는 사용자의 기기(웹 브라우저)에 파일 형태로 직접 저장돼요. '오늘 하루 이 창 다시 열지 않기' 설정이나 장바구니에 담아둔 물건 목록처럼, 조금 유출되어도 큰 피해가 없는 편리 기능에 주로 쓰여요. 서버의 저장 공간을 차지하지 않아서 서버의 부담을 덜어주는 장점이 있어요.
반면에 세션은 실제 정보(이름, 등급, 결제 상태)를 서버 내부 메모리나 데이터베이스에만 보관해요. 대신 사용자 브라우저에는 '당신은 77번 손님입니다'라고 적힌 세션 아이디(Session ID)라는 번호표만 쥐여줘요.
손님이 번호표를 들고 오면, 서버는 내부 장부에서 77번 서랍을 열어 그 손님의 상태를 확인해요. 이렇게 하면 중요한 개인정보가 인터넷 통로를 떠돌지 않고 서버 안에만 머물기 때문에 훨씬 안전해요.
조금 더 정확히 말하면: 둘은 대립하는 라이벌이 아니에요
흔히 쿠키와 세션을 완전히 별개의 경쟁 기술로 생각하기 쉬워요. 하지만 사실 세션이 제대로 동작하려면 쿠키의 도움이 반드시 필요해요. 서버가 손님에게 발급한 세션 번호표를 손님의 브라우저에 저장하고 매번 꺼내 보여줄 때 쓰는 수단이 바로 쿠키이기 때문이에요.
만약 브라우저 설정에서 쿠키 기능을 완전히 꺼버리면 어떻게 될까요? 서버가 아무리 세션 번호표를 만들어 보내줘도 브라우저가 저장하지 못해서, 페이지를 이동하자마자 로그인이 풀려버려요.
조금 더 정확히 말하면, 최근에는 모바일 앱과 여러 서버를 유연하게 잇기 위해 토큰(Token) 기반 인증처럼 둘의 장점을 합친 방식도 많이 써요. 하지만 웹 브라우저가 상태를 기억하는 기본 뿌리에는 여전히 쿠키와 세션의 협력이 자리 잡고 있어요.
🤔 흔한 오해
쿠키는 컴퓨터를 해킹하고 고장 내는 악성 바이러스의 일종이다.
쿠키는 단순한 텍스트 파일일 뿐이라 스스로 프로그램을 실행하거나 바이러스를 퍼뜨릴 수 없어요. 다만 방문 기록이나 검색 습관을 추적하는 데 쓰일 수 있어 주의가 필요한 것뿐이에요.
🧺 일상에서 만나요
쿠키는 내 컴퓨터에 남겨두는 메모 쪽지이고, 세션은 서버가 보관하는 안전한 장부예요. 둘은 함께 손을 잡고 웹사이트의 로그인과 상태를 유지해 줘요.