세션과 쿠키 (Session and Cookie)
쉽게 풀면
놀이공원에 입장할 때 손목에 도장을 찍어주면, 이후 다시 줄을 서서 표를 보여주지 않아도 도장만 확인하면 재입장이 가능합니다. 웹사이트도 비슷한 방식을 씁니다. 처음 로그인하면 서버는 "이 사용자는 로그인했다"는 정보를 서버 안에 저장해 두고(세션), 그 정보를 찾을 수 있는 열쇠 번호를 사용자의 브라우저에 넘겨줍니다(쿠키). 이후 사용자가 페이지를 이동할 때마다 브라우저는 이 쿠키를 자동으로 함께 보내고, 서버는 쿠키에 적힌 열쇠 번호로 세션을 찾아 "아, 이 사람은 로그인한 사용자구나"라고 알아보는 것입니다.
왜 중요한가
세션과 쿠키는 웹 애플리케이션에서 로그인 유지, 사용자 식별, 개인화 추천 등 거의 모든 상태 기반 기능의 토대가 되는 메커니즘입니다. 그래서 웹 보안 연구에서는 세션 하이재킹 방어 기법을, 사용자 행동 분석·추천 시스템 연구에서는 세션 단위 로그 처리 방식을, HCI 연구에서는 개인정보 및 프라이버시 이슈와 관련지어 이 개념을 다루는 등 여러 분야에서 반복적으로 등장합니다.
논문에서는 이렇게 쓰입니다
이 문장은 "쿠키에 저장된 세션 식별자를 이용해 같은 방문(세션) 동안 사용자가 클릭한 순서를 하나로 묶어 분석했다"는 뜻입니다. 웹 로그 분석, 사용자 행동 연구, 추천 시스템 논문에서 세션과 쿠키는 사용자 단위를 구분하는 기본 단위로 자주 쓰입니다.
공격자가 미리 알고 있는 세션 식별자를 사용자가 그대로 쓰게 만드는 공격을 막기 위해, 로그인할 때마다 새 식별자를 발급하는 방어 기법을 제안했다는 뜻으로, 웹 보안 연구에서 흔히 쓰이는 서술이다.
브라우저의 쿠키 차단 기능이 사용자의 인식과 우려에 어떤 영향을 주는지 조사했다는, HCI·프라이버시 연구 맥락의 서술이다.
조금 더 깊게 보면
세션 식별자는 보통 무작위로 생성된 긴 문자열이며, 예측하기 어렵게 만드는 것이 보안의 핵심입니다. 쿠키에는 만료 시간, 접근 가능한 도메인/경로, HttpOnly(자바스크립트로 접근 불가)나 Secure(HTTPS에서만 전송), SameSite(다른 사이트에서의 요청 시 전송 제한) 같은 속성을 지정할 수 있는데, 이런 속성 설정이 세션 하이재킹이나 CSRF 같은 공격을 막는 데 중요한 역할을 합니다. 최근에는 쿠키 없이 토큰(JWT 등)을 이용해 상태를 유지하는 방식도 널리 쓰이며, 두 방식의 장단점을 비교하는 연구도 존재합니다.
주의할 점
쿠키에는 세션 식별자뿐 아니라 다양한 정보가 저장될 수 있는데, 이 값이 노출되면 공격자가 다른 사람의 세션을 가로챌 수 있습니다. 앞서 다룬 크로스사이트 스크립팅 공격이 사용자의 쿠키를 훔치는 대표적인 경로로 악용되는 이유가 여기에 있습니다.