2009-04-22 7 views
95

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

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

그러나 firefox (3.0.9 최신 정식 릴리스)는 브라우저가 닫히거나 사용자가 로그 오프하거나 OS를 다시 시작할 때 쿠키가 만료되지 않는다고 말할 수있는이 규칙을 따르지 않는 것으로 보입니다.

그래서 파이어 폭스가 마지막으로 공개적으로 무기한으로 세션 쿠키로 언급하는 이유는 무엇입니까?

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

+1

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

+0

귀하의 연구에 대한 감사 BRH, 나는 실제로 귀하의 회신을 보았습니다 귀하의 답변을 표시하기 전에 귀하의 연구를 확인하는 대신, 의미가 완전히 잊어 버렸습니다! 사과 – meandmycode

답변

105

이는 분명히 설계된 것입니다. 이 버그 질라 버그를 확인하십시오 : https://bugzilla.mozilla.org/show_bug.cgi?id=443354

Firefox는 Firefox를 닫고 모든 탭을 저장 한 다음 브라우저를 복원하고 해당 탭이 다시 돌아 오는 기능을 제공합니다. 이를 세션 복원이라고합니다. 내가 깨닫지 못했던 점은 또한 해당 페이지의 모든 세션 쿠키도 복원한다는 것입니다! 그것은 마치 브라우저를 닫지 않은 것처럼 취급합니다.

브라우저가 작동을 멈추었을 때 바로 돌아 왔을 때 세션 쿠키를 지우는 데 사용되는 웹 개발자에게는 약간의 당황 스럽습니다. 몇 달 전부터 항상 탭으로 열어 둔 사이트에서 설정 한 일부 이전 세션 쿠키가 있습니다.

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

+0

나는이 문제가 상당히 의심 스럽다는 것을 발견했다."저장 및 종료"를 선택하거나 "탭 및 창 복원"을 선택하면 브라우저를 닫을 때 모든 세션 쿠키가 그대로 유지됩니다. "사용자"가 그들을 제거하는 유일한 방법은 먼저 탭을 닫고 브라우저를 닫는 것입니다. – mark

+0

해결 방법을 찾았습니까? 내 앱에서 세션 ID가 고유해야하므로 파이어 폭스에서 이전 세션을 파내는 것을 원하지 않습니다. – ArjanP

+0

죄송합니다, 임시 해결책을 모르겠습니다. 앱의 관점에서 볼 때 브라우저는 절대로 닫히지 않았습니다. – bhollis

3

이렇게하면됩니다. 나는 쿠키 모듈 테스터 중 한 사람이었고, 다르게 작동하는 디자인 이유가 있다고 생각하지 않습니다. (충돌이 발생하더라도 세션 쿠키 이 다시 시작될 때 작동하도록 설계 될 수 있습니다 ...)

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

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

+0

매우 이상합니다.이 시스템을 테스트 한 두 시스템의 버그 일뿐입니다. 쿠키를 보았지만 아무것도 살아남지 않았습니다. 그리고 그들은 파이어 폭스가 세션 쿠키로 절대 분류하고 있습니다. 파이어 폭스에서 바꿀 수있는 유일한 옵션은 자바 스크립트를 켜고 끄는 것 뿐이다. 내 설치된 플러그인은 파이어 버그와 웹 개발자 도구 모음이다. 어쨌든 건배. – meandmycode

+0

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

1

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

+1

글쎄, "쿠키가 이유가있는 만료일로 설정되었습니다."-이 시나리오에서는 만료일을 설정하지 않으므로 브라우저가 쿠키의 지속 기간을 결정할 수 있습니다. – meandmycode

-1

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

Google Chrome, IE 9에서 실제로 테스트 한 결과 정상적으로 작동합니다. 그러나 파이어 폭스는이 "세션"(파이어 버그에 의해보고 됨) 쿠키를 죽이는 것을 꺼린다.

확인. 이것이 내가 한 일이다. 나는 FireFox 메인 메뉴에서 Exit를 선택했다. 그리고 나서 기대했던대로 잘 수행했다.

0

나는 모질라가 몇 년 동안 그대로두고 왔음을 부끄럽게 생각합니다.

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

절대적으로 복원하면 안됩니다. 페이지가 예이지만 쿠키 ini가 '0'으로 설정된 세션이 없습니다.

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

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

-1

나는 meandmycode에 동의하지 않습니다.

는 HTTP 스펙을 만료와 클라이언트가 설정 쿠키 헤더와 함께 무엇을해야하는지에 대한 https://www.ietf.org/rfc/rfc6265.txt 회담 : 서버는 "세션"여러 이상의 쿠키를 유지하기 위해 사용자 에이전트 소원

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

논리적 인 확장은 서버가 만료 값 (즉, 세션 쿠키)을 설정하는 것이 브라우저가 종료시 쿠키를 유지하지 않는 것을 요구한다는 것입니다. 브라우저가 그 시맨틱을 존중하지 않으면 서버의 응답을 존중하지 않습니다.

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