사이트를 방문하고 이용할 때 브라우저에 저장되는 내용들
브라우저는 사용자의 컴퓨터에 있는거니까 사용자가 가지고 있는 정보.
사용자가 사이트에 방문하면 데이터를 저장하는게
모든 데이터를 수정할 수 있는 권한이 사용자에게 주어짐
수정 불가능한 중요한 정보들을 쿠키에 저장하기에는 부적절하다
단점?
사용자가 임의로 고치거나 지울 수 있고,
심지어 남이 훔쳐보거나 도둑질하기 쉽다
민감하거나 중요한 정보를 쿠키에 담기는 불안.
중요한 정보는 세션에서 관리
세션은 로그랜드가 직접 관리하는 영역으로 사용자가 직접 데이터를 수정할 수 없다
로그랜드에서 사용자가 접근하면
세션ID라는 기간이 짧은 임시 키를 하나 발급해준다
사용자는 이 임시 키를 가지고 있다가 로그랜드로 요청할 일이 생기면
이 세션ID를 함께 보내준다
세션ID를 보고 로그랜드가 사용자를 식별할 수 있게 된다
만약 서버를 잘못 건드려서 세션 정보를 모두 날려버리게 된다면?
세션을 사용하는 사이트에 접속하면 서버에서는 사용자를 구분하기 위한 기한이 짧은 임시키를 브라우저에 보내서 쿠키로 저장한다
중요한 정보는 서버의 메모리나 데이터베이스에 저장된다
브라우저가 이 사이트의 페이지들에 접속할 때마다
http 요청에 이 키를 실어서 전송하고
서버는 그 키를 보고 사용자를 인식해서 사용자의 정보들을 가공해서 응답으로 보내주게 되는 것이다
로그랜드에 입장하게 되면 모든 관람객들에게 토큰이라는 티켓은 준다
토큰은 그냥 영어 소문자, 대문자, 숫자 이런게 마구 섞여있어서
이 토큰이 어떤 데이터를 가지고 있는지 어떤 의미인지 알 수 없다
토큰을 어떻게 발급하고 어떤 식으로 사용하는지 과정을 살펴볼건데
로그랜드는 로그랜드만 알고있는 비밀 키(SecretKey)를 가지고 있다
사용자의 정보를 이 비밀 키를 통해서 아까 보았던 랜덤함 문자열 같은 토큰을 발급할 수 있게 된다 이 토큰을 가지고 있다가 (인증 요청의 응답 값으로 토큰을 받아서 보관한다) 로그랜드에게 전달하면 또다시 비밀키를 이용해서 토큰을 읽어들인다(로그랜드의 비밀키로 해독한다) 이 토큰이 유효한지, 또는 토큰에 있는 데이터를 판단해서 사용자를 식별할 수 있게 된다
한 아이디로 여러 사용자가 접근한다고 가정했을 때, 이 토큰이 유효하기만 하다면 사용자가 같은 아이디로 들어오든 말든 로그랜드는 항상 입장을 허용해준다.
하지만 세션에서 관리한다면 이미 접속한 적이 있는 아이디로 다시 접속하는 경우 막는다던가 로그랜드가 컨트롤할 수 있게 된다.
캐시라는 선반에 가방을 담아둔다
(가져오는데 비용이 드는 데이터를 임시로 저장했다가 필요할 때 꺼내서 쓸 수 있게 해주는 것을 캐시라고 한다)
알바생은 나중에 손님이 오시면 불필요하게 창고를 왔다갔다 할 필요 없이 선반에서 바로 꺼내 드리면 됨.
사용자에 의해 조작되어도 크게 문제되지 않을 정보를 브라우저에 저장
인증에 대한 정보를 서버가 저장
인증에 대한 정보를 사용자가 저장
한번 전송받은 데이터를 저장해놓았다가 필요할 때 꺼내 쓰기 가능