Firefox 세션 쿠키


105

일반적으로 만료 기간이없는 쿠키가 주어지면 최신 브라우저는이 쿠키를 '세션 쿠키'로 간주하고 브라우징 세션이 끝날 때 (일반적으로 브라우저 인스턴스가 닫힐 때) 쿠키를 제거합니다.

IE, Opera, Safari 및 Chrome은 모두이 동작을 지원합니다.

그러나 파이어 폭스 (3.0.9 최신 버전)는 브라우저가 닫히거나 사용자가 로그 오프하거나 OS를 다시 시작할 때 쿠키가 만료되지 않는다는 점에서이 규칙을 따르지 않는 것으로 보입니다.

그렇다면, 파이어 폭스는이 쿠키가 무기한으로 지속되는 세션 쿠키라고 부르는 이유는 무엇입니까?

Firefox가 세션 쿠키 만료를 처리하는 방법을 아는 사람이 있습니까?


1
나는 이것이 실제로 대답되었다고 생각하지 않습니다. 나도보고있다.
bhollis

조사해 주셔서 감사합니다 BRH, 실제로 귀하의 답변을 보았고 대신 귀하의 답변을 표시하기 전에 귀하의 조사를 확인하려는 의미였습니다. 완전히 잊어 버렸습니다! 사과
meandmycode

답변:


116

이것은 분명히 의도적으로 설계된 것입니다. 이 Bugzilla 버그를 확인하세요 : https://bugzilla.mozilla.org/show_bug.cgi?id=443354

Firefox에는 Firefox를 닫는 기능이 있으며 모든 탭을 저장하고 브라우저를 복원하면 해당 탭이 다시 나타납니다. 이를 세션 복원이라고합니다. 내가 깨닫지 못한 것은 해당 페이지에 대한 모든 세션 쿠키도 복원된다는 것입니다! 브라우저를 닫지 않은 것처럼 취급합니다.

이것은 브라우저가 충돌하면 원래 위치로 바로 돌아갈 수 있지만 세션 쿠키가 삭제되는 데 사용되는 웹 개발자에게는 약간 당황스러워한다는 점에서 의미가 있습니다. 몇 달 전부터 탭에서 열어 본 사이트에서 설정 한 오래된 세션 쿠키가 있습니다.

이를 테스트하려면 브라우저의 모든 탭을 닫은 다음 브라우저를 닫고 다시 시작하십시오. 내가 생각하는 사이트의 세션 쿠키가이 경우에 취소해야한다. 그렇지 않으면 세션 복원을 꺼야합니다.


1
조사해 주셔서 감사합니다. "저장 및 종료"를 선택하거나 "탭 및 창 복원"을 선택하면 브라우저를 닫을 때 모든 세션 쿠키가 그대로 유지됩니다. "사용자"가 제거하는 유일한 방법은 먼저 탭 닫은 다음 브라우저 닫는 것입니다.
표시

해결 방법을 찾았습니까? 내 앱의 세션 ID가 고유해야하므로 Firefox가 이전 세션을 파헤치는 것을 정말로 원하지 않습니다.
ArjanP

죄송합니다. 해결 방법을 모르겠습니다. 앱의 관점에서 볼 때 브라우저가 닫히지 않았습니다.
bhollis 2010 년

6
나는이 (IMO의 부당한 조언) 결정의 영향에 대해 언급했습니다 : mrclay.org/index.php/2010/05/02/…
Steve Clay

나도 오늘이 행동에 물렸다. 내 앱에 문제가 있다고 생각했습니다. 그런 다음 Chrome과 다른 브라우저를 테스트 한 다음 firefox가 범인임을 알아 냈습니다.
Dingle


3

작동합니다. 나는 쿠키 모듈 테스터 중 하나였으며 이것이 다르게 작동하는 디자인 이유가 없다고 생각합니다 (충돌하는 경우 세션 쿠키 다시 시작할 때 유지되도록 설계 될 수 있습니다 ...)

"기본 설정"메뉴> "개인 정보"탭> "쿠키 표시 ..."버튼에서 쿠키를보고 있습니까?

또한 새 프로필을 사용해 보셨습니까?


매우 이상합니다. 제가 테스트 한 두 시스템의 버그 일 뿐이라면 상대적으로 기쁩니다. 쿠키를 살펴 봤는데 쿠키가 아무 문제없이 살아 남았습니다. 내가 파이어 폭스에서 변경 한 유일한 옵션은 자바 스크립트를 끄고 켜는 것입니다. 내 설치된 플러그인은 파이어 버그와 웹 개발자 도구 모음입니다 .. 아 어쨌든 건배합니다.
meandmycode

다양한 쿠키 모듈 환경 설정도 있지만 이러한 종류의 기능을 가진 것은 기억 나지 않습니다. FF3가 텍스트 파일에서 쿠키 데이터베이스로 전환했습니다. 아마도 데이터베이스가 잘못 작동했을 수 있습니다.
benc

2

위의 meandmycode에 동의하지 않습니다.

HTTP 사양 https://www.ietf.org/rfc/rfc6265.txt 는 클라이언트가 Expires를 사용하여 Set-Cookie 헤더로 수행해야하는 작업에 대해 설명합니다.

서버가 사용자 에이전트가 여러 "세션"(예 : 사용자 에이전트 다시 시작) 동안 쿠키를 유지하기를 원하는 경우 서버는 Expires 속성에 만료 날짜를 지정할 수 있습니다. 사용자 에이전트의 쿠키 저장소가 할당량을 초과하거나 사용자가 서버의 쿠키를 수동으로 삭제하는 경우 사용자 에이전트는 만료일 전에 쿠키를 삭제할 수 있습니다.

이것의 논리적 확장은 브라우저가 종료시 쿠키를 유지하지 않도록 서버가 요구해야하는 유일한 방법은 Expires 값 (예 : 세션 쿠키)을 설정하지 않는 것입니다. 브라우저가 해당 의미를 따르지 않으면 서버의 응답을 따르지 않습니다.

기본적으로 사용자 에이전트는 서버 요청을 무시하고 Expires 값이 설정된 것처럼 작동하기로 결정합니다.


1

이것은 공유 사용자 환경에서 약간의 문제입니다. 세션 종료시 만료되도록 설정된 인증 쿠키를 설정 한 경우. 이는 브라우저를 닫고 다른 사용자가 Firefox를 시작한 후에도 Firefox에서 유지됩니다. 쿠키에는 이유가있어 만료일이 설정되어 있습니다!


1
글쎄, "쿠키에는 이유가있는 만료 날짜가 설정되어 있습니다"와 관련하여 공정하게 말하면이 시나리오에서는 만료 날짜를 설정하지 않으므로 해당 쿠키의 지속 시간을 결정하는 것은 브라우저에 달려 있습니다.
meandmycode

0

나는 Mozilla가 몇 년 동안 이것을 그대로 두었다는 사실에 당황합니다.

좋아 .. 그래서 FF를 종료하고 PC를 끕니다. 다음날 FF가 시작되고 마지막 페이지 세트를 엽니 다 (편리한 기능).하지만 세션을 복원하고 "내 설정 저장"기능이없는 사이트에 다시 로그인합니다. 내가 만든 사이트이기 때문에 알고 있습니다. PHP ini 설정으로 무엇을하든 세션이 복원됩니다.

절대 복원해서는 안됩니다. 페이지 예, 그러나 쿠키 ini가 '0'으로 설정된 세션 아니오.

이것이 보안 허점으로 표시되지 않는 이유를 이해할 수 없습니다. 물론 마지막 로그인 시간을 기준으로 로그인을 허용해야하는지 확인하기 위해 서버 측에서 몇 가지 추가 검사를 수행 할 수 있지만 필요하지는 않습니다.

세션은 지속되지 않아야합니다. FF는 쿠키 만료 설정을 조작하고 있습니다.


-1

글쎄, 그것은 나에게 당황 스럽습니다. 내 시스템은 사용자가 EXIT를 눌러 모든 세션 쿠키를 삭제할 수 있도록 설정되어 있습니다. 하지만 사용자가 실제로 종료를 선택하지 않고 브라우저를 닫는 경우 세션 쿠키를 지우고 싶습니다.

실제로 Chrome, IE 9에서 테스트했으며 정상적으로 작동합니다. 그러나 Firefox는이 "세션"(Firebug가보고 한) 쿠키를 죽이는 것을 꺼립니다.

확인. 이것이 내가 한 일입니다. FireFox 주 메뉴에서 종료를 선택했고 그때부터 예상대로 제대로 수행했습니다 (이유를 모릅니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.