
세션(session)
세션 : 서버 측에서
클라이언트를 구분하기 위해 제공하며, backend(서버의 메모리)
와 쿠키(클라이언트)
에 모두 저장됨. 브라우저가 backend를 방문할 때 만들어짐.
쿠키 :클라이언트 측에서
세션ID를 저장하고 전달하는 수단
- 클라이언트가 서버에 요청을 하면, 서버가 요청을 받아 응답한 후, 둘 사이의 관계는 끝난다. 계속 연결되어 있는 것이 아님. 때문에 세션과 쿠키가 필요함.
- 세션은 서버가 재부팅되면 초기화된다.(실제로 서버는 꺼지는 일이 없다.)
- 클라이언트가 서버에 첫 요청을 함
- 서버는 세션을 만들어서 클라이언트에게 줌
- 클라이언트는 세션을 쿠키에 저장
- 클라이언트는 매 요청마다 요청과 함께 이 쿠키를, 서버에게 전달함.
세션 설계 시 고려 사항
- 시스템의 모든 페이지에서 로그아웃 가능하도록 UI를 구성함
- 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함
- 세션 타임아웃을 중요도에 따라 설정(예: 중요도 높으면 2~5분, 낮으면 15~30분 )
- 이전 세션이 종료되지 않으면 새 세션이 생성되지 못하게 설계
- 중복 로그인을 허용하지 않은 경우, 클라이언트의 중복 접근에 대한 세션 관리 정책 수립
- 패스워드 변경 시 활성화된 세션을 삭제하고 재할당
세션 통제
세션 통제란: 세션 연결과 연결로 인해 발생하는 정보를 관리하는 것
세션 통제의 보안 약점
- 불충분한 세션 관리 :
일정한 규칙이 존재하는 세션ID가 발급되거나, 타임아웃이 너무 길게 설정되어 있는 경우 발생할 수 있음
- 잘못된 세션에 의한 정보 노출 :
다중 작업(멀티 스레드) 환경에서 멤버 변수에 정보를 저장할 때 발생할 수 있음
멤버 변수 : 클래스 내에 선언되어 클래스의 모든 메소드들이 접근 가능한 변수
멀티 스레드(multi thread)
멀티 스레드 :
하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것. 멀티 프로세스와는 다르다.
멀티 프로세스(multi process) :
여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것
멀티 스레드와 멀티 프로세스의 공통점 :
여러 흐름을 동시에 실행한다는 점에서 같다.
차이점 :
- 멀티 스레드 :
각 스레드가 자신이 속한 프로세스의 메모리를 공유
함.
- 멀티 프로세스:
각 프로세스가 독립적인 메모리
를 가지고 별도로 실행됨.
