Cookie

DATE : 2023/11/8

앞에서 살펴본 식별&인증을 통해 Login의 개념을 재정의 해보았다.

식별 정보 & 인증 정보를 사용해 Login 하는 거 까지는 Okay!

그렇다면 다음으로 고려해볼 문제는 로그인 상태를 어떻게 유지할 것인가 이다.

원래는 web server에게 ID:PASSWORD를 보내고 나면 그 다음 요청은 누가 보낸 것인지 모르는 게 맞다!!

왜? web server에게 "나는 이전에 로그인한 yunsoo야!" 라는 걸 증명할 수단이 없기 때문!

이 부분을 해결하기 위해 web server와 작은 쪽지를 주고 받기로 했다.

(1) 로그인을 하고 나면 web server가 "너 앞으로 요청할 때는 yunsoo라고 쪽지 써서 보내! 하고

쪽지에 어떤 내용을 적어야 하는 지 알려준다.

(2) 그러면 사용자(browser)는 서버가 알려준 값을 고이고이 가지고 있다가

요청을 보낼 때 서버가 알려준 내용을 쪽지에 적어 request에 붙여 보내게 된다.

(3) 요청을 받은 서버는 그 안에 들어있는 쪽지를 확인해

이미 인증된 사용자임을 확인 받음으로써 로그인이 유지되는 것이다.

이때 서버가 만들어서 client에게 보내는 쪽지 내용이 바로 Cookie이다.

위에서 말했듯이 Cookie는 서버가 만들어 보내주면 client가 저장하고 있는 값으로

이는 필요할 때마다 꺼내 쓰기엔 편리하지만 동시에 문제점도 존재한다.

"client가 저장한다"는 상황에서 client는 일반 사용자이기도 하지만

공격자일 수도 있다. (web server 입장에서는 자신에게 요청하는 누구든 client니까!)

만약에 공격자가 "yunsoo"의 cookie를 훔쳐서 자신이 요청을 보낼 때 사용한다면

web server는 단순하게 공격자를 yunsoo라고 인식하게 된다.

즉 누군가의 Cookie를 훔쳐 사용하게 되면 '그 사람인 척' 할 수 있게 되는 것!!

이런 문제점을 해결하기 위해 고민 고민 하다 나온 게 바로, Session이다.

Last updated