문제

상당히 일반적인 인증 체계를 사용하는 PHP 사이트가 있습니다.

  • 전체 로그인 영역에는 SSL이 필요합니다.
  • 사용자는 사용자 이름과 PW를 입력하면 DB와 일치하면 세션이 시작되고 값이 설정됩니다.
  • 인증이 필요한 페이지를 방문하려고하면 해당 값이 세션에 있는지 확인하고 로그인 페이지로 전달합니다.

우리는 항상 세션 쿠키를 사용하도록 설정되어 있지 않거나 앞으로 페이지를 가로 지르는 캐시에 문제가 있기 때문에 항상 로그인하는 데 어려움을 겪는 몇몇 사람들을 얻습니다.

그러나 최근에 우리는 로그인 할 수없는 IE를 가진 많은 사람들이있었습니다. 세션 쿠키 설정을 수정하고 캐시를 지우는 것은 도움이되지 않지만 동일한 컴퓨터에서 Firefox/Opera를 사용하면 로그인 할 수 있습니다. 나는 그것이 IE의 문제라고 확신하지만 그 사이에는 아무것도 아닙니다.

세션 쿠키에 영향을 줄 IE 7에 대한 최근 변경 사항을 아는 사람이 있습니까?

업데이트:

최근에 로그인 직후 세션_regenerate_id () 호출을 구현했습니다. 이제 사용자가 기존 세션이 사용될 수있는 상황이 있지만 꽤 오래 전이었습니다.

도움이 되었습니까?

해결책

첫 번째 단계는 IE가 아닌 Firefox로 로그인 할 수있는 사용자를 찾은 다음 Fiddler를 실행하여 로그인 프로세스의 HTTP 요청/응답 쌍의 차이점을 확인하는 것입니다. 적어도 어디에서 볼 수 있는지에 대한 더 나은 아이디어를 제공해야합니다.

다른 팁

IE의 보안 설정이 크랭크되어 있거나 (특히 기업 환경에서 공통적이든) 또는 로그인하는 페이지가 프레임이나 iframe에있는 경우 쿠키가 저장되지 않도록하는 것일 수 있습니다. 이 경우 P3P 정책 HTTP 헤더를 설정하기 만하면됩니다. 다음은 구현 방법에 대해 찾을 수있는 가장 좋은 설명입니다.

나는 아무것도 듣지 못했습니다. 그러나 이것이 바로 모든 공개 프로젝트에서 Cookieless 세션을 사용하는 것으로 전환 한 이유입니다. ASP.NET 에이 내장이 있다고 생각하지만 내 자신의 구현을 선호합니다. QueryString SessionID 매개 변수를 페이지로 전달하고 DB 레코드 또는 다른 데이터 저장소에 묶는 것이 훨씬 더 안정적입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top