쿠키 대신 세션을 사용해서 로그인 후 사용자의 정보를 저장해야 하는 이유

김학준·2024년 6월 17일
0

게시판

목록 보기
21/44

웹 애플리케이션에서 사용자 인증과 상태 유지를 위해 쿠키와 세션을 사용한다. 보안과 관리 측면에서 세션이 더 안전한 이유는 다음과 같다.

1. 쿠키 값 변조 문제

  • 문제점: 사용자가 쿠키 값을 임의로 변경할 수 있다.
    • 예시: Cookie: memberId=1Cookie: memberId=2로 변경하면 다른 사용자의 정보에 접근할 수 있다.
  • 해결책: 세션을 사용하면 클라이언트에 중요한 정보를 직접 저장하지 않고, 추정 불가능한 세션 ID만 쿠키에 저장하여 전달한다.

2. 쿠키 정보 탈취 문제

  • 문제점: 쿠키에 저장된 정보는 쉽게 탈취될 수 있다.
    • 예시: 개인정보나 신용카드 정보가 쿠키에 저장되면 로컬 PC나 네트워크 전송 구간에서 탈취될 수 있다.
  • 해결책: 세션을 사용하면 중요한 정보는 서버에 저장되고, 클라이언트에는 추정 불가능한 세션 ID만 전달된다. 따라서 해커가 세션 ID를 탈취해도 중요한 정보를 쉽게 얻을 수 없습니다.

3. 세션을 사용한 보안 강화

  • 임의의 토큰 사용: 예측 불가능한 임의의 세션 ID을 생성 후 서버에서 세션 ID과 사용자 ID를 매핑하여 관리한다.
  • 세션 ID 만료 시간 설정: 세션 ID의 만료 시간을 짧게 유지(예: 30분)하거나 해킹이 의심될 경우 강제로 제거할 수 있다.

세션 동작 방식

  1. 로그인

    • 사용자가 idpassword를 전달하면 서버에서 사용자 인증을 수행한다.
  2. 세션 생성

    • 추정 불가능한 세션 ID(예: UUID)를 생성하고, 세션 저장소에 사용자 정보를 저장한다.
    • 예시: Cookie: mySessionId=zz0101xx-bab9-4b92-9b32-dadb280f4b61
  3. 세션 ID를 응답 쿠키로 전달

    • 서버는 클라이언트에 mySessionId 쿠키를 전달한다.
    • 클라이언트는 이 쿠키를 저장하고, 이후 요청 시 항상 이 쿠키를 서버에 전달한다.
  4. 세션 정보 조회

    • 서버는 클라이언트가 전달한 mySessionId 쿠키를 기반으로 세션 저장소를 조회하여 사용자 정보를 확인한다.

쿠키와 비교한 세션의 장점

  • 변조 방지: 세션 ID는 예측 불가능한 복잡한 값으로 설정된다.
  • 정보 보호: 쿠키에 중요한 정보를 저장하지 않으므로 쿠키가 탈취되더라도 중요한 정보는 보호된다.
  • 세션 ID 만료 관리: 해커가 세션 ID을 탈취해도 시간이 지나면 사용할 수 없도록 만료 시간을 짧게 설정할 수 있다.

0개의 댓글