이름=드림이
(cookie) 는 가로챌 수 있는데 ticket=98b96a
는 못가로채나요? cookie만 있을 때 위험한 게 cookie가 탈취된 상황이라면, serverside의 session에 대응되는 key가 cookie에 저장되면 session이 프로세스에 추가되어도 보안이 더 강화된 게 아니지 않나요? 제가 어떤 점을 놓치고 있는 것 같아요.
쿠키를 가로채지는 못하는 상황으로 가정해주세요.
만약에 쿠키에 이름=드림이
를 쓰면 드림이
계정으로 로그인이 될 때의 문제점은, 드림이
라는 이름은 누구나 알 수 있기 때문에 아무나 드림이
를 흉내낼 수 있게 되는 것입니다. (로그인을 수행하지 않아도 로그인한 척할 수 있다)
강의자료에도 나와있지만 session을 사용하게 되면 드림이
계정의 비밀번호를 인증해야만 받을 수 있는, 유추할 수 없는 랜덤 문자열 키
를 이용하기 때문에 해당 사용자만 접근할 수 있음을 보장할 수 있습니다.
쿠키와 세션의 차이점을 정리하고 싶네요.
쿠키는 사용자의 추가, 수정, 삭제 행위가 가능하고 클라이언트단에서 관리됩니다.
세션은 중요정보는 서버에 저장되고, 서버단 언어를 통해 세션 관련 정보를 쿠키의 session 변수를 통해 관리됩니다.
-
질문에서 가로채다라는 의미는 안전하지 않은 프로토콜 (HTTP, FTP, SMTP and so on), 즉 암호화되지 않은 프로토콜으로 정보가 전송될 때 발생 됩니다. 공격자가 같은 대역대나 스니핑이 가능한 환경에서 쿠키 값을 가로챌 수 있습니다. 이 때 세션이 포함된 쿠키도 가로채게 될 수도 있습니다. 다만, IP 체크라던지 다른 보안 방어 메커니즘으로 공격자는 가로챈 쿠키를 사용할 수 없을 수도 있습니다.
-
세션이 쿠키보다 안전하다는 것을 말하기 위해서는 웹 서비스의 특정 권한을 사용자가 변경할 수 없게 세션을 사용하는 것 입니다. 예를 들자면, 쇼핑몰에서 만약 금액을 저장하는 변수가 cookie 로 관리된다면, 사용자는 임의로 금액 변경이 가능하고, 쇼핑몰 운영자는 손해를 보겠습니다.
그 밖의 세션의 장점은 검색을 통해서 확인이 가능할 듯 합니다.