[Python] Programmazione web

Manlio Perillo manlio_perillo a libero.it
Dom 27 Apr 2008 17:08:11 CEST


Lawrence Oluyede ha scritto:
> On Sun, Apr 27, 2008 at 9:50 AM, Manlio Perillo
> <manlio_perillo a libero.it> wrote:
>>  > Non che l'approccio non sia interessante ma non puoi seriamente
>>  > pensare di mettere in produzione una cosa così sperimentale senza la
>>  > la sicurezza che una qualsiasi patch di un qualsiasi browser non ti
>>  > tolga il terreno da sotto i piedi.
>>
>>
>>  Scherzi vero?
> 
> Non ho detto che Digest è sperimentale, ho detto che la tua idea mi
> sembrava tale. Ok forse sperimentale è sbagliato, "onerosa" forse è
> più corretto
> 

No, mi riferivo alla tua ipotesi che "qualsiasi patch di un qualsiasi 
browser non ti tolga il terreno da sotto i piedi".

Non è così: il fatto che il client di rimandi indietro il "nonce" 
invariato si può dire che è alla base di HTTP Digest.

>>  > HTTP Digest è utile per
>>  > l'autenticazione ma così com'è non mi fiderei a dargli come incarico
>>  > il concetto di stato persistente. Per questo esistono i cookie, anche
>>  > se c'è chi li aborre. Io li uso solo per questo genere di
>>  > autenticazione
>>  >
>>
>>  No, si vede che non conosci come funziona HTTP Digest.
> 
> - client accede a risorsa protetta
> - server manda 401, realm e nonce
> - client risponde con nonce, username e il resto degli hash
> 
> Dettagli a parte il meccanismo è questo.
> 

Esatto.

> E per design non comprende il concetto di logout. Certo, come dici tu
> puoi ignorare gli header, ma mi sembra un hack senza un reale
> benefinicio, anzi.
> 
> Però se mi spieghi nel dettaglio cosa intendevi sono felice di sbagliarmi :)
> 

Il metodo è semplice: quando visiti una url speciale per il logout, 
generi una risposta 401 marcata come "stale" e con un nuovo nonce che 
contiene, all'inizio (ad esempio), la stringa "logout".

Quando il client vede che la risposta è stale, computa di nuovo l'hash 
con il nuovo nonce (però senza richiedere la password all'utente) e 
rimanda indietro il nuovo nonce e gli altri campi.

Quindi lato server quando vedi un nonce che comincia con "logout" sai 
che devi considerare l'utente come non autenticato.

Come detto è un piccolo trucco, il browser ti sta comunque mandando le 
credenziali corrette.

Comunque l'ho testata con tutti i browser possibili (escluso Safari) e 
sembra funzionare.

Credimi, non avere di mezzo i cookie ed essere comunque garantiti per la 
sicurezza è un bel sollievo ;-).

HTTP Digest ha il supporto lato client, e ti evita lo sbattimento di 
doverti tu preoccupare di tutto con i cookie.

Peccato che l'utente debba "subire" la finestra del dialogo del browser 
per autenticarsi (ci sono anche altri problemi minori come la minore 
flessibilità rispetto ai cookie nella gestione dei domini, ed il fatto 
che è supportato solo md5 per l'hash).






Ciao  Manlio Perillo


Maggiori informazioni sulla lista Python