2011-01-08 4 views
11

Apache 2.2.3이 설치된 Tomcat 6.0.29에서 Java 응용 프로그램을 실행하고 있습니다. 로그인 페이지는 HTTPS를 사용하지만 대부분의 페이지는 HTTP를 사용합니다.Tomcat은 HTTPS에서 HTTP로 이동할 때 세션을 유지합니다.

사용자가 로그인 보호 된 페이지 (HTTP)에 액세스하려고하면 로그인 페이지 (HTTPS)로 리디렉션되고 로그인 한 다음 원래 요청한 페이지로 리디렉션됩니다. JSESSIONID 쿠키가 비보안으로 설정되고 HTTP와 HTTPS에 모두 사용되므로 위와 같은 결과가 좋습니다.

그러나 사용자가 로그인 페이지 (HTTPS)에서 시작하면 JSESSIONID 쿠키가 보안으로 설정되므로 HTTP 아래의 페이지로 리디렉션하고 새 세션을 강제 실행하여 로그인으로 리디렉션 할 때 세션을 사용할 수 없습니다 페이지를 다시보십시오. 이번에는 JSESSIONID 쿠키가 비보안으로 설정 되었기 때문에 작동합니다.

사용자가 로그인 페이지를 먼저 치면 두 번 로그인해야하는 것을 방지하려면 어떻게해야합니까?

+0

[HTTPS 로그인 쿠키에 JSESSIONID를 저장하지 않음] (http : // stackoverflow.co.kr/questions/3963958/https-login-not-saving-the-jsessionid-in-a-cookie) – leonbloy

+1

감사합니다. @leonbloy. 이것은 매우 예스입니다 (나는 로그인 페이지를 직접 통제하고있는 것을 제외하고). 필터에 비보안 쿠키를 추가하는 해결책이 있습니다. 하지만 해킹처럼 느껴질수록 더 좋은 방법이 될 것입니다. – rlovtang

+0

가장 쉬운 방법은 보안 URL에 게시하는 동안 로그인 페이지가 안전하지 않은 상태에서 사이트의 98 %를 사용하는 것입니다. 그러나 중간에 사람이 URL을 변경하고 사용자 이름/암호를 수집 할 수 있으므로 보안 문제가 있습니다. – rlovtang

답변

7

(업데이트 : 명확성을 위해) 로그인 HTTP 시작/종료는 https를 사용하고 사용자가 로그인 한 세션을 통해 https를 사용합니다.

로그인 한 사용자가없는 경우에만 HTTP를 사용하십시오.

쿠키가 프로토콜 경계를 넘을 수없는 이유는 공격 벡터입니다. (URL에 jsession ID를 인코딩 항상 나)는 HTTP URL로 리디렉션에서 JSESSIONID를 인코딩, 당신이 정말로 주장하는 경우

이 매우 나쁜 생각을

을 수행하는 방법 (* 아래 업데이트 참조). Tomcat이 http 리디렉션을 얻으면 Tomcat이 세션을 찾아 계속 진행해야합니다. 당신이 진심이

을하지 말아야하는 이유

, 같은 페이지에 HTTPS 및 HTTP 컨텐츠를 혼합 어떤 사이트는 그냥 재미 (쉬운) 공격의 모든 종류의에 자신을 열어 가고 있습니다.

나머지 세션이 일반 텍스트 인 경우 https에서 로그인을 "안전하게"유지하는 것은 의미가 없습니다. 그래서 그 사용자 이름/암호 (아마도 암호 만)가 보호되어 있습니까?

인기있는 man-in-the-middle 공격을 사용하여 공격자는 세션 ID를 복사하여 재미있게 사용합니다. 대부분의 사이트는 활성 상태로 유지되는 세션을 만료하지 않으므로 MIM은 사실상 암호가있는 것처럼 완전한 액세스 권한을 갖습니다.

성능 측면에서 https가 비싸다고 생각하거나 here으로 보거나 검색 만하면됩니다. 허용 가능한 수준으로 https 성능을 향상시키는 가장 쉬운 방법은 서버가 연결 상태를 유지하도록 설정하는 것입니다.

+0

그래서 어떤 형태의 로그인이있는 모든 사이트는 모든 페이지에 대해 HTTPS를 사용해야하며 HTTP를 사용하는 사이트는 결코 세션을 사용해서는 안된다는 것을 말하고 있습니다. – rlovtang

+0

아니요. 내가 말하는 말은 사용자가 사이트에 로그인하면 해당 사이트를 오가는 모든 트래픽은 사용자가 로그 아웃 할 때까지 https를 거쳐야한다는 것입니다. 방금 원래 응답을 편집했습니다. – Pat

+1

트위터, 페이스 북, stackoverflow 등이 동의하지 않는 것 같습니다 – rlovtang

관련 문제