[Python] Programmazione web

Manlio Perillo manlio_perillo a libero.it
Dom 27 Apr 2008 18:09:51 CEST


Lawrence Oluyede ha scritto:
> 2008/4/27 Manlio Perillo <manlio_perillo a libero.it>:
>>  No, mi riferivo alla tua ipotesi che "qualsiasi patch di un qualsiasi
>>
>> browser non ti tolga il terreno da sotto i piedi".
> 
> Mi era venuto in mente che IE5 aveva problemi con HTTP Digest
> 

Dal codice sorgente di Apache mod_auth_digest:

/* MSIE compatibility hack.  MSIE has some RFC issues - doesn't
  * include the query string in the uri Authorization component
  * or when computing the response component.  the second part
  * works out ok, since we can hash the header and get the same
  * result.  however, the uri from the request line won't match
  * the uri Authorization component since the header lacks the
  * query string, leaving us incompatable with a (broken) MSIE.
  *
  * the workaround is to fake a query string match if in the proper
  * environment - BrowserMatch MSIE, for example.  the cool thing
  * is that if MSIE ever fixes itself the simple match ought to
  * work and this code won't be reached anyway, even if the
  * environment is set.
  */


In effetti nella mia implementazione non uso il campo 'uri' nell'header 
Authorization ma il path nella request (e senza la query string): 
funziona su IE ma su Firefox no... devo correggerlo ;-).


> [...]
>>  Credimi, non avere di mezzo i cookie ed essere comunque garantiti per la
>>  sicurezza è un bel sollievo ;-).
> 
> Sicuramente, magari provo questa soluzione, anche se rimangono almeno
> due problemi:
> 
> - non è possibile dare uno stile alla finestraccia di username e
> password del browser

Già, è così.
Inoltre la finestra riporta sempre "username" anche se, magari, tu vuoi 
usare qualche altra cosa (come l'indirizzo email) per autenticare l'utente.

> - l'overhead del fatto che il client continua a mandare il nonce anche
> quando non serve
> 

Non c'è nessun overhead.
Devi comunque controllare l'header Authorization per sapere se l'utente 
è autenticato oppure se è anonimo.

L'overhead (rispetto al metodo che usi ora) è che devi "rifare" il login 
ad ogni request, ad esempio se usi un database devi fare una query ad 
ogni request per verificare che l'utente ha le credenziali corrette.

Ma questo direi che è normale, dato che HTTP è stateless.


>>  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).
> 
> Ecco
> 
> Thanks per l'input!
> 


Di nulla, di queste cose dovrei parlarne anche al talk che presento al 
Pycon, anche se la discussione su HTTP Digest meriterebbe un talk tutto suo.




Ciao  Manlio Perillo


Maggiori informazioni sulla lista Python