Disconnessione dall'autenticazione HTTP di base

4

Come visto su link , ci sono alcuni modi interessanti di disconnettere un utente dall'autenticazione HTTP di base.

Attualmente sto inviando un HTTP 401 per farlo in questo modo:

GET logout.php

<?php
header('HTTP/1.1 401 Unauthorized', true, 401);
exit;

E su richieste successive, sono richiesto dal browser con le modalita 'credenziali. Facendo clic su Annulla, ricevo una risposta HTTP 401, il risultato desiderato.

Questa è un'applicazione interna e HTTPS è usato .

Ci sono potenziali problemi di sicurezza con questo? Sto usando il modulo LDAP (da qui l'autenticazione HTTP di base). Apache "cache" le credenziali in qualsiasi modo o sono le credenziali verificate con ogni richiesta da user-agent? C'è qualcos'altro che devo fare per garantire che le richieste senza credenziali valide dall'agente utente ricevano sempre una risposta HTTP 401?

    
posta rink.attendant.6 30.09.2014 - 21:00
fonte

1 risposta

5

Le credenziali di autenticazione di base vengono trasmesse con ogni singola richiesta dal browser. Quindi perché non puoi tradizionalmente "disconnettersi" senza chiudere il browser.

Il motivo per cui questo approccio funziona è perché il browser è senza stato. Normalmente quando invia una richiesta GET / POST / HEAD riceve una risposta di 200 OK. Se riceve una risposta 401, richiede all'utente le credenziali e invia nuovamente la richiesta con queste credenziali. Se tali credenziali sono errate, il server invierà nuovamente una risposta 401 e il browser richiederà nuovamente. Quindi, quando il browser riceve una risposta 401, assume che le credenziali inviate nella richiesta precedente fossero errate e le chiederanno di nuovo.

È importante ricordare che stai facendo affidamento sul comportamento lato client per cancellare le credenziali e chiederne di nuove da parte dell'utente e come tale c'è sempre un rischio associato a qualcosa al di fuori del tuo controllo.

    
risposta data 12.11.2014 - 05:13
fonte

Leggi altre domande sui tag