[ TIL ] - 세션

Gorae·2021년 7월 29일
0

(TIL) CS

목록 보기
4/6
post-thumbnail

세션(session)

  • 세션 : 서버 측에서 클라이언트를 구분하기 위해 제공하며, backend(서버의 메모리)쿠키(클라이언트)에 모두 저장됨. 브라우저가 backend를 방문할 때 만들어짐.

  • 쿠키 :클라이언트 측에서 세션ID를 저장하고 전달하는 수단

  • 클라이언트가 서버에 요청을 하면, 서버가 요청을 받아 응답한 후, 둘 사이의 관계는 끝난다. 계속 연결되어 있는 것이 아님. 때문에 세션과 쿠키가 필요함.
  • 세션은 서버가 재부팅되면 초기화된다.(실제로 서버는 꺼지는 일이 없다.)
    1. 클라이언트가 서버에 첫 요청을 함
    2. 서버는 세션을 만들어서 클라이언트에게 줌
    3. 클라이언트는 세션을 쿠키에 저장
    4. 클라이언트는 매 요청마다 요청과 함께 이 쿠키를, 서버에게 전달함.

세션 설계 시 고려 사항

  • 시스템의 모든 페이지에서 로그아웃 가능하도록 UI를 구성함
  • 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함
  • 세션 타임아웃을 중요도에 따라 설정(예: 중요도 높으면 2~5분, 낮으면 15~30분 )
  • 이전 세션이 종료되지 않으면 새 세션이 생성되지 못하게 설계
  • 중복 로그인을 허용하지 않은 경우, 클라이언트의 중복 접근에 대한 세션 관리 정책 수립
  • 패스워드 변경 시 활성화된 세션을 삭제하고 재할당

세션 통제

세션 통제란: 세션 연결과 연결로 인해 발생하는 정보를 관리하는 것

세션 통제의 보안 약점

  • 불충분한 세션 관리 :
    일정한 규칙이 존재하는 세션ID가 발급되거나, 타임아웃이 너무 길게 설정되어 있는 경우 발생할 수 있음
  • 잘못된 세션에 의한 정보 노출 :
    다중 작업(멀티 스레드) 환경에서 멤버 변수에 정보를 저장할 때 발생할 수 있음
    멤버 변수 : 클래스 내에 선언되어 클래스의 모든 메소드들이 접근 가능한 변수

    멀티 스레드(multi thread)

    • 멀티 스레드 :

      하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것. 멀티 프로세스와는 다르다.
    • 멀티 프로세스(multi process) :

      여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것
    • 멀티 스레드와 멀티 프로세스의 공통점 :

      여러 흐름을 동시에 실행한다는 점에서 같다.
    • 차이점 :

      • 멀티 스레드 :
        각 스레드가 자신이 속한 프로세스의 메모리를 공유함.
      • 멀티 프로세스:
        각 프로세스가 독립적인 메모리를 가지고 별도로 실행됨.
profile
좋은 개발자, 좋은 사람

0개의 댓글