Aggiornamento del CVS:
1) Implementazione password criptate:
Il sistema ora scrive le password nel database (Partecipa.base tabella
persone) in un hash Md5 one-way, dal quale non puo' essere ricavata la
password in chiaro. Sono state modificate tutte le routine che
confrontavano la password e quindi le procedure di login, modifica
password sia da utente che da amministratore, remind della password e
registrazione iniziale dell'utente.
Ho cercato di attenermi il piu' possibile alle procedure che tutti gli
utenti Partecipa.net conoscono, ma nel caso del reminder della
password ho dovuto cambiare leggermente la modalita': anziche'
trasmettere la password in chiaro, cosa che evidentemente non e' piu
possibile, all'utente viene azzerata la password e ne viene generata
una nuova in modo pseudocasuale.
Per non modificare la logica procedura di registrazione iniziale che
prevede la scelta della password da parte dell'utente, ho dovuto
implementare un sistema che salva temporaneamente la password fornita
dell'utente in un file temporaneo che viene eliminato alla conferma
della registrazione.
Se ci fossero dubbi sulla sicurezza della cosa: finche' l'utente non
conferma la registrazione lo stato dell'utente e' sospeso, quindi tale
password non puo' essere usata in alcun modo... inoltre se qualcuno
dovesse raggiungere il filesystem del server, la directory /tmp
contiene anche le sessioni di apache che sono ben piu' pericolose...
inoltre questi file non contengono l'account dell'utente ma solo la
password, e vengono eliminati dal filesystem non appena l'utente
conferma la registrazione.
Per aiutare chi ha gia' una base installata con password in chiaro ho
realizzato uno script di conversione che si trova in ./contrib: lo
script va eseguito dalla stessa directory con:
./partecipa-maint.pl pwdconv
che effettua la lettura della password in chiaro, le salva in un file
cleartext_password_<data>.txt nella directory corrente ed effettua un
update su tutti gli utenti con la password MD5.
Inoltre eseguendo:
./partecipa-maint.pl savepwd
viene creato uno script sql contenente le password attuali
(indipendentemente dal fatto che siano in chiaro o meno) e che
importato nel db riportera' le password di tutti gli utenti a quello
stato.
2) Fix per integrazione Sympa:
Dopo il fix per le accentate del precedente aggiornamento, ho scoperto
che l'integrazione con sympa per l'archivio newsletter non funzionava
piu': indagando ho trovato un pezzo di codice perl in TRIStateCGI.pm
immesso da un terminale non UTF8 e che dava problemi in fase di
conversione UTF8: per ora ho cambiato encoding prima della riga
incriminata e l'ho rimesso in UTF8 immediatamente dopo, e la cosa
sembra non dare problemi, quindi nel frattempo metto il fix in cvs:
con calma vedro' se e' possibile adottare soluzioni piu' pulite (forse
basta riscrivere manualmente la riga di codice incriminata senza
cut&paste)
|