2011-03-31 2 views
5

고객 상인 시스템 &에 의해 수신 된 금융 거래를 처리하기위한 시스템을 개발 중입니다. 이는 공급 업체에서 구입 한 기존 시스템을 대체합니다. 클라이언트 인터페이스는 시스템에서 사용자 인증 & 트랜잭션 처리 화면을 호출해야합니다. 다음과 같이Java EE 응용 프로그램에서 세션 처리

시스템 기능,

  1. 은 상인의 ​​사이트에서 입력 매개 변수를 수신
  2. 이 그것을
  3. 인증하고 사용자의 유효성을 검사
  4. (사용자는 우리가 우리의 로그인 화면을 호출해야 우리의 시스템 &에 등록됩니다) 거래 처리
  5. 가맹점에 대한 응답 상태 응답

응답이 수신되면 클라이언트는 세션에있는 값에서 트랜잭션 데이터의 유효성을 검사해야합니다. 다음과 같이

시스템 개요는

enter image description here

(click here for full size image)

내 문제는 우리가 클라이언트에 응답되면 세션을 유지할 수없는 클라이언트입니다, 묘사 될 수있다. 그러나 벤더로부터 구입 한 시스템으로 동일한 기능을 수행 할 수 있습니다 (우리는 내부 코딩 구조를 분석 할 수있는 소스 코드가 없습니다). 우리가 고객에게 응답하는 방식에 뭔가 잘못된 것이 있기를 바랍니다.

이 문제를 어떻게 극복 할 수 있습니까? 우리는 자바 1.4.2를 사용하는

는, 웹 스피어 애플리케이션 서버

+0

니스 개요 – BalusC

답변

5

세션을 만들 수있는 많은 일들이 사라질 수 있습니다. 나는 그들을 추적하고 아무거나가 맞았는지 확인하기 위하여 건의 할 것입니다. 세션이 작동하는 방법을 understand하면 더 쉽게 수행 할 수 있습니다.

  • 세션 시간이 초과되었습니다. 일반적으로 기본값은 30 분입니다. 이것은 <session-timeout>web.xml에 confiugable이며 시간 제한을 분 단위로 지정할 수 있습니다. HttpSessionListener을 구현하여 세션 생성을 추적하고 로거를 사용하여 제거 할 수 있습니다.

  • 세션이 강제로 무효화되었습니다. 이 코드는 HttpSession#invalidate()을 호출 할 때 발생합니다. 이것은 HttpSessionListener으로 추적 가능합니다.

  • 세션 쿠키가 사라졌습니다. 세션은 쿠키에 의해 뒷받침됩니다. 세션이 생성 된 경우 서버는 Set-Cookie 헤더에 세션 ID를 추가합니다. 클라이언트는 Set-Cookie 헤더에 지정된대로 (컨텍스트) 경로의 모든 후속 요청에 Cookie 헤더와 동일한 쿠키를 보내야합니다. 브라우저 내장 웹 개발자 도구 모음 (Chrome/Firefox23 +/IE9 +에서 F12 키 누름)의 HTTP 트래픽 모니터 ('네트워크'탭)에서 추적 할 수 있습니다. 쿠키는 동일한 쿠키 도메인의 모든 웹 애플리케이션에서 액세스 할 수 있습니다. 또한 ServletC2ServletC1이 아닌 다른 웹 응용 프로그램 컨텍스트에서 실행되는 경우 동일한 세션을 사용하지 않습니다.또한 "서버"웹 응용 프로그램이 동일한 도메인에서 실행되는 경우 이론적으로 "클라이언트"웹 응용 프로그램의 모든 쿠키를 제거 할 수 있습니다.

  • 클라이언트가 쿠키를 지원하지 않습니다. 잘 설계된 웹 응용 프로그램은 jsessionid으로 URL 재 작성을 사용하여 쿠키없는 클라이언트를 동일한 웹 응용 프로그램의 요청간에 추적합니다. 그러나 두 번째 웹 응용 프로그램은 첫 번째 웹 응용 프로그램으로 다시 리디렉션 할 때도 동일하게 수행해야합니다.

+0

설명에 감사드립니다 & 나는 당신의 대답의 명확성을 좋아합니다. 당신이 묘사 한 세 번째 점에 대해 더 자세히 설명해 주시겠습니까? 'servletC2'의 sessionId를'servletS2'의 응답으로 그 id로'servletS1'과'Set-Cookie'로 가져 오는 방법이 있습니까? – SLM

+0

URL을'jsessionid'로 다시 쓰는 보안 취약점이 아닙니까? 세션 ID를 인식 할 수없는 사용자에게 노출합니다. 추가 보안 메커니즘이 있습니까? – fnst

+1

@fnst : 사용자가 공개적으로 URL을 공유하고 사용자의 세션이 아직 활성 상태 인 동안 링크가 다른 사람들에 의해 사용 된 경우에만 유연성이 있습니다. 추가 보안 메커니즘은 없습니다. 서블릿 필터 또는 사용자 정의 세션 관리자의 도움을 받아 직접 "IP-lock"을 만들 수 있습니다. – BalusC

관련 문제