2009-11-11 9 views
3

일단 Firefox가 HTTP 응답의 WWW-Authenticate 헤더에 대한 응답으로 모달을 팝업하는 것으로 나타났습니다. 그런 다음 Firefox는 Firefox가 닫힐 때까지 사용자 이름/암호를 저장합니다. Web Developer 플러그인을 사용하면 개발자 중심의 사람들이 로그 아웃 할 수 있습니다. 그러나 캐시 된 자격 증명을 잃어 버리기 위해 브라우저로 전송해야하는 HTTP 메시지는 무엇입니까?WWW- 인증 로그 아웃

답변

2

적절한 해결책을 찾았습니다. 조금 복잡하지만 잘 작동합니다. GUID 필드가있는 테이블을 만들었습니다. 그것은 어떤 기록으로 시작하지 않았습니다. 해결책은 다음과 같습니다.

  1. 사용자가 "로그 아웃"을 클릭합니다.
  2. 로그 아웃 스크립트는 GUID를 새 테이블에 추가합니다.
  3. 로그 아웃 스크립트는 사용자를 매개 변수로 GUID가있는 URL로 리디렉션합니다.
  4. 사용자가 GUID를 매개 변수로 사용하여 URL을 조회하면 시스템에서 GUID를 검색합니다.
    1. GUID가 테이블에 있으면 GUID가있는 레코드를 제거하고 자격 증명이 유효하더라도 잘못된 사용자 이름/암호 응답 코드를 제공하십시오.
    2. GUID가 테이블에 없으면 자격 증명의 유효성을 검사하십시오.

이 새 테이블 그래서, 해커 빠르게 부풀어 얻을 각 사용자는 테이블에서 하나 개의 항목을 가질 수 있습니다 확신 할 수 있습니다. 또한 타임 스탬프를 사용하고 일괄 처리 작업을 통해 테이블을 자주 제거 할 수 있습니다.

3

브라우저를 정상적으로 보내지 말고 (사용자의 서버에 대한 각 http 요청을 보내면) 브라우저의 시작 부분에 교정본을 보내려면 (http 401 응답을 통해) .

1

Firefox는 403 Forbidden으로 캐싱 된 WWW-auth UN/PW를 지울 것입니다.

크롬은 403 Forbidden 또는 401 Not Authorized으로 지워집니다.

Safari는 캐시 할 것인지 묻는 메시지를 항상 표시합니다.

IE가 똥입니다.

+0

불행히도 WWW-auth에서는 Chrome이 401 Unauthorized 헤더 나 403 Forbidden 헤더로 PHP_AUTH_USER를 지우지 않습니다. – jacouh

+0

좋은 캐치. 나는 그들이 예전과 같다고 생각한다. 내가 바르게 읽고 있어도 Chrome 18에서 어딘가로 바뀌 었습니다. 이 상황에서 모범 사례는 WWW-auth를 전혀 사용하지 않는 것입니다. 최신 브라우저가 사양에 따라 처리하지 않기 때문입니다. 자격 증명을 유지하기를 원하지 않는다면 더 쉽게 플러시 할 수있는 쿠키 또는 세션에 로그인을 저장하는 것이 좋습니다. 죄송합니다. 이상이 아니라면 ... – pieman72