2014-09-12 4 views
1

특정 웹 응용 프로그램의 작동 방식을 살펴보고 JSESSIONID 세션 토큰에 어떤 정보가 저장되어 있는지 정확하게 확인하려고합니다.JSESSIONID는 어디에 저장되어 있습니까?

예를 들어 PHPSESSSID 토큰이/tmp /,/var/lib/php/session 또는/var/lib/php5/session과 같은 위치에 [서버에 따라] 저장됩니다.

제 질문은 JSESSIONID도 비슷한 방식으로 저장되어 있습니까? 저장 위치를 ​​찾기 위해 확인해야 할 특정 구성 파일이 있습니까? 전체 코드 기반을 거치지 않고 세션 토큰에있는 것을 정확하게 찾는 대체 방법이 있습니까? 예를 들어 PHP에서는 세션 토큰 파일을 검사하고 저장되는 주요 구성 요소 (아마도 username, authorized flag 등)를 볼 수 있습니다.

감사합니다.

+2

Bishan : 질문을 게시하기 전에 이미 해당 게시물을 검토했습니다. 시간을내어 읽으면 세션이 저장되는 위치에 대한 정보가 없다는 것을 알 수 있습니다. – Peleus

답변

1

JSESSIONID를 시작하는 것은 쿠키에 저장됩니다. 쿠키가 해제되어 있으면 URL에 jsessionid를 저장하도록 URL 다시 작성해야합니다. 쿠키에 세션에 대한 다른 정보는 없습니다. 다음 중 하나가 될 때까지 세션에 저장 아무것도 일이 발생하지 않습니다 :

  1. 인증을 컨테이너에
  2. request.getSession() 또는는 invalidate() 그렇게되면

라고 , 세션에 정보를 저장할 수 있습니다. request.getSession()을 호출하면 HttpSession을 반환합니다. HttpSession은 serializable을 구현합니다. 이 객체가 존재하면 요청이 끝나면이 객체가 직렬화됩니다. 모든 컨테이너는 HttpSession 직렬화 된 객체를 저장하는 방법에 대해 다양한 방법을 제공합니다. 기본적으로 대부분의 서버는이를 메모리에서 수행합니다. 대부분의 컨테이너는 HttpSession 객체를 직렬화 할 수있는 방법 (메모리, 디스크, 데이터베이스)을 선택할 수있는 선택 항목을 제공합니다. 대부분의 컨테이너는 또한 HttpSession을 직렬화하기위한 고유 한 방법을 사용자 정의하고 작성하는 방법을 제공합니다.

기본적으로 서블릿 스펙은 세션을 들여다보고 세션 ID 또는 이와 관련된 데이터 목록을 가져 오는 방법을 제공하지 않습니다. 엄청난 보안 위험이 있습니다.

세션 ID 및 관련 정보가 표시되도록하려면 코드를 작성해야합니다. 이것을하기위한 여러 가지 방법이 있습니다. 몇 가지 예는 다음과 같습니다

  1. 이 javax.servlet.http.HttpSessionListener을 구현하고 데이터베이스
  2. 에 JSESSIONID를 저장 javax.servlet.http.HttpSessionAttributeListener을 구현하고 세션 ID와 데이터베이스에서 키/값 쌍을 저장

위 인터페이스를 구현할 때 세션에 정보를 저장하지 않으면 인증에서 사용자 이름을 검색 할 수 없습니다. 원래의 war/ear 파일 동작에 영향을주지 않고 웹 애플리케이션에 두 개의 리스너를 추가 할 수 있습니다.

기본적으로 앱 서버를 사용하면 찾고있는 정보를 얻지 못하게되지만 약간의 코딩 만하면 쉽게 우회 할 수 있습니다.

-2

모든 단일 응용 프로그램 서버는이 데이터를 저장하는 고유 한 방법을 정의하지만 대개 다른 응용 프로그램 서버에 직접 액세스 할 수는 없습니다.

세션에서 설정되는 값을 보려면 코드에서 세션에 값을 설정하거나 제거 할 때 HttpSessionAttributeListener 개체를 사용하여 이벤트를 수신 할 수 있습니다.

-2

모든 응용 프로그램은 응용 프로그램 서버에서 세션과 세션 ID를 갖습니다. 자바에서 세션 관리는 그것을 관리하는 방법에 달려있다. 일반적으로 쿠키는 쿠키에 저장됩니다. HttpSessionAttributeListener 해당 클래스의 객체를 사용하여 이벤트를 수신 할 수 있습니다.

우리는 name 세션 또는 원하는대로 bean을 개발할 수 있으며 HttpSession 인터페이스를 구현하여 패턴 메소드를 얻을 수 있습니다.

해당 빈에는 세션에 저장하려는 모든 정보가 포함됩니다.

+2

세션은 쿠키에 저장되지 않습니다. 세션 ID 만 쿠키에 저장됩니다. – celias

0

Tomcat은 세션 데이터를 직렬화 할 수 있고 재시작 후에도 세션을 구성한 경우에만 종료시에만 세션 데이터를 hd에 저장합니다. 세계의 거의 모든 바람둥이를 볼 임시/var 폴더가 없습니다.

+0

무효. PersistentManager를 사용하면 세션이 비활성화 될 때마다 세션을 저장합니다. DeltaManager를 사용하면 클러스터 전체에서 복제됩니다. BackupManager를 사용하면 지정된 백업 노드까지 백업합니다. – EJP

+0

@ EJP 완전히 맞습니다. * 스토리지, 스토리지 노드 또는 스토리지 네트워크를 구성한 경우 데이터가 기록됩니다. – Hannes

관련 문제