쿠키와 세션

gyub·2025년 4월 22일
0

모의해킹 스터디

목록 보기
8/31

웹서버는 웹페이지 파일을 한 번 주면 끝이라고 했지만, 실제로 우리가 웹서비스를 사용할 때는 로그인 정보가 그대로 유지되는 경우를 많이 만나게 됩니다

웹서버는 어떻게 로그인을 유지시켜주는 것일까요?

🔎 쿠키

쿠키는 로그인 성공 시 서버가 쿠키에 사용자의 정보를 담아 클라이언트에게 주면

브라우저는 그 쿠키를 가지고 있다가 서버에 접속할 때 쿠키를 통해

자신이 누구이며 로그인에 성공했었다는 것을 보여주어 로그인을 유지시키는 방법입니다

이 때 유의해야 할 점은, 서버는 쿠키를 가지고 있지 않다는 점입니다

즉 서버는 쿠키 정보를 가지고 있지 않기 때문에 쿠키가 정말 그 사람 것이 맞는 지 확인할 수 없으며,

클라이언트가 보여주는 쿠키의 정보만 보고 지금 접속하는 사람이 누구인지 인지합니다


이 때, 과연 어떤 문제가 발생할까요?

해커도 클라이언트입니다

따라서 해커가 쿠키 값을 다른 사람의 값으로 바꿔서 서버에게 보내면,

다른 사람의 계정으로 로그인 할 수 있게 됩니다

이 문제의 원인은 쿠키가 클라이언트 측에 저장되기 때문입니다

🔎 세션

그렇다면 서버 측에 로그인 정보를 저장하면 되지 않을까요?

그래서 만들어진 것이 세션입니다

로그인에 성공하면 서버는 세션을 생성합니다

그리고 세션을 구분하기 위해 세션 ID를 생성해, 이 아이디를 쿠키에 담아 클라이언트에게 줍니다

이 때, 세션 ID는 랜덤한 문자열로 생성되어 쉽게 유추할 수 없는 값으로 주어집니다



물론 이 방법도 세션 ID를 탈취한다면, 다른 사람의 계정에 로그인이 가능해집니다

그럼 당연히 해커는 세션 ID를 탈취하려고 하겠죠?

그렇기 때문에 세션 ID는 쉽게 찾을 수 없도록 랜덤하게 생성되어야 합니다

그리고 일정시간 이후 세션이 만료되어 다시 로그인 해야 하도록 만들 수도 있습니다

하지만 세션은 서버 쪽에 저장되는 것이기 때문에, 서버의 메모리를 많이 사용할 수 있다는 점을 인지하고 있어야 합니다

0개의 댓글