웹서버는 웹페이지 파일을 한 번 주면 끝이라고 했지만, 실제로 우리가 웹서비스를 사용할 때는 로그인 정보가 그대로 유지되는 경우를 많이 만나게 됩니다
웹서버는 어떻게 로그인을 유지시켜주는 것일까요?
쿠키는 로그인 성공 시 서버가 쿠키에 사용자의 정보를 담아 클라이언트에게 주면
브라우저는 그 쿠키를 가지고 있다가 서버에 접속할 때 쿠키를 통해
자신이 누구이며 로그인에 성공했었다는 것을 보여주어 로그인을 유지시키는 방법입니다
이 때 유의해야 할 점은, 서버는 쿠키를 가지고 있지 않다는 점입니다
즉 서버는 쿠키 정보를 가지고 있지 않기 때문에 쿠키가 정말 그 사람 것이 맞는 지 확인할 수 없으며,
클라이언트가 보여주는 쿠키의 정보만 보고 지금 접속하는 사람이 누구인지 인지합니다
이 때, 과연 어떤 문제가 발생할까요?
해커도 클라이언트입니다
따라서 해커가 쿠키 값을 다른 사람의 값으로 바꿔서 서버에게 보내면,
다른 사람의 계정으로 로그인 할 수 있게 됩니다
이 문제의 원인은 쿠키가 클라이언트 측에 저장되기 때문입니다
그렇다면 서버 측에 로그인 정보를 저장하면 되지 않을까요?
그래서 만들어진 것이 세션입니다
로그인에 성공하면 서버는 세션을 생성합니다
그리고 세션을 구분하기 위해 세션 ID를 생성해, 이 아이디를 쿠키에 담아 클라이언트에게 줍니다
이 때, 세션 ID는 랜덤한 문자열로 생성되어 쉽게 유추할 수 없는 값으로 주어집니다
물론 이 방법도 세션 ID를 탈취한다면, 다른 사람의 계정에 로그인이 가능해집니다
그럼 당연히 해커는 세션 ID를 탈취하려고 하겠죠?
그렇기 때문에 세션 ID는 쉽게 찾을 수 없도록 랜덤하게 생성되어야 합니다
그리고 일정시간 이후 세션이 만료되어 다시 로그인 해야 하도록 만들 수도 있습니다
하지만 세션은 서버 쪽에 저장되는 것이기 때문에, 서버의 메모리를 많이 사용할 수 있다는 점을 인지하고 있어야 합니다