- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- [Tutorial] La Gestione degli utenti in PHP e MySQL
-
Fino a ieri il mio bizzarro sistema di autenticazione faceva in modo che le password fossero memorizzate nell' id_sessione in chiaro. Ho risolto (adesso non lo sono più).
Adesso però devo trovare il modo per non trasmettere più la password utente nel form di login ma bensì quell'informazione combinata di cui si è parlato.
L'informazione combinata deve tenere conto di due fattori:
stringa casuale che solo il server conosce;
password inserita nel formPosso creare una funzione personalizzata (stringa/password) per generare l'informazione combinata? Se ho capito bene la risposta è SI.
Deve essere obbligatoriamente in javascript la funzione? La risposta è NO se ho capito.
-
@linus said:
Fino a ieri il mio bizzarro sistema di autenticazione faceva in modo che le password fossero memorizzate nell' id_sessione in chiaro. Ho risolto (adesso non lo sono più).
Adesso però devo trovare il modo per non trasmettere più la password utente nel form di login ma bensì quell'informazione combinata di cui si è parlato.
L'informazione combinata deve tenere conto di due fattori:
stringa casuale che solo il server conosce;
password inserita nel formPosso creare una funzione personalizzata (stringa/password) per generare l'informazione combinata? Se ho capito bene la risposta è SI.
Deve essere obbligatoriamente in javascript la funzione? La risposta è NO se ho capito.Si, il java script si
-
@PaTeR said:
Poi magari cerca di integralrla qui, così vediamo di curare un'altro aspetto del progetto
E' esattamante quello che voglio fare .
-
come stiamo procedendo? :
-
@Tuonorosso said:
come stiamo procedendo? : 8)Cerchiamo nuovi utenti che possono partecipare!!!
-
ok
intanto non ci conviene dividerci i compiti noi che già ci siamo?
-
@Tuonorosso said:
come stiamo procedendo? :
Per il controllo sono un po' indietro, ho avuto una montagna di cose da fare in questi giorni, comunque ci stò lavorando, anche perchè mi serve per un cliente., ma se volete andate pure avanti voi.
-
@Tuonorosso said:
ok
intanto non ci conviene dividerci i compiti noi che già ci siamo?Non sarebbe male...Allora ci organizziamo? Per favore scrivete chi è interessato, in fondo è una cosa che servirà a tutti, quindi + siamo meglio è
-
Tuonorosso
Pater
-
-
Tuonorosso
Pater
emmebar
LowLevel
-
News?
-
@Fab G said:
News?hehe servono utenti volenterosi!
comuqneu la parte software base non è difficile da fare...
vuol dire che mi ci dedicherò un pò di più
-
ops...io mi ero dimenticato :bho:
-
@Tuonorosso said:
ops...io mi ero dimenticato :bho:
utenti non prendete esempio da questo moderatore!
-
@PaTeR said:
utenti non prendete esempio da questo moderatore!
ehhehe...davvero...a meno che non vogliate diventare mister universo...non imitatemi
-
Allora ragazzi la questione password è già stata trattata, ma vorrei discutere ora dell'hashing in sè.
Message-Digest algorithm 5
Ecco qui il famoso MD5... vi sarete chiesti a che serve qualche volta... no? Ebbene, esso non serve affatto a CRIPTARE una password, bensì a calcolare l'hash di una stringa. Per utilizzarlo PHP mette a disposizione la sua bella funzioncina built-in [url=php.net/md5]md5()string md5 ( string str , [ bool raw_output ] )
In questo prototipo troviamo STR che è la stringa da hashare, e l'opzione booleana RAW_OUTPUT che per default è FALSE. Naturalmente non è possibile risalire alla stringa originale, perchè alcune operazioni dell'algoritmo non sono reversibili ( come la moltiplicazione: 6 è 23, ma potrebbe anche essere 16 ).
LA SICUREZZA DI QUESTO ALGORITMO
La sicurezza di questo algoritmo è alta, ma certamente non è sicurissima: sono infinite ( come tutte le cose ) le stringhe possibili che potrebbero dare come risultato lo stesso hash. Però non preoccupatevi: è molto raro che un lamer le trovi, se non con attacco [url=http://en.wikipedia.org/wiki/Brute_force_attack]Brute-Force che tralaltro sarebbe molto dispendioso per lui.COME EVITARE GLI ATTACCHI BRUTE-FORCE
Per evitare attacchi di questo tipo molti siti permettono un massimo di 3 login per uno stesso utente ogni 15 minuti: come il PIN del cellulare... 3 tentativi, allo scadere di questi l'utnte dovrà aspettare 15 minuti ( o quello che volete voi ) prima di tentare un nuovo accesso! Per gestire questo genere di protezione, vi basta controllare i login di un utente ( non interessa manco l'IP ) ed allo scadere dei tre tentativi ( controllati dallo script di accesso che aumenterà i tentativi falliti ) bloccherà i login di quell'utente trascrivendo nel database il timestamp di quell'accesso permettendo allo script del login di calcolare il tempo necesssario per permettere un nuovo accesso. Molti script usano questo metodo, come phpBB e altri forums.MD5 in Javascript?
Ma comunque resta un problema: facciamo passare la password in chiaro??? NOOOO!Ora dobbiamo adottare uno stratagemma!
- Usare la classe MD5 per javascript
- Creare un algoritmo proprio
Ora vi spiegherò come usare MD5 in Javascript, sistema che comunque in alcuni casi non funzionerà... perciò bisogna decidere se
- Obbligare il client ad abilitare js
- Metterlo al corrente che il sistema non è sicuro e passare la password in chiaro
Così dovremo procedere in questo modo:
Avremo un campo <noscript> che setterà un valore POST in modo tale che esso sarà 'disabled' solo se il js è disattivato
<noscript><input type='hidden' name='js' value='disabled'></noscript>
ed un campo <script> che setterà il campo su 'enabled'
<script lang='javascript'>document.write("<input type='hidden' name='js' value='enabled'>");</script>
così, sempre in js cripteremo il campo con [url=http://pajhome.org.uk/crypt/md5/]questo javascript prima che avvenga il passaggio all'altra pagina.
Lo script lato-server controllerà il valore di 'js' e se sarà su enabled non hasherà il campo della password, se invece è su disabled lo hasherà.
LINKS UTILI
http://www.faqs.org/rfcs/rfc1321
http://pajhome.org.uk/crypt/md5/
http://en.wikipedia.org/wiki/Brute_force_attack
http://userpages.umbc.edu/~mabzug1/cs/md5/md5.htmlConclusioni
Ci sono tanti modi per criptare una stringa, io vi ho dato informazioni sul metodo più noto... a voi il resto!Ciao!
-
Pater, è possbile avere la stessa sicurezza con uno script solo di php???
di java non ne so nulla .
-
@Albertorrr said:
Pater, è possbile avere la stessa sicurezza con uno script solo di php???
di java non ne so nulla .Vedi, il problema è la sicurezza del trasferimento dei dati dal client al server. Col Java possiamo hashare la stringa in anticipo rendendo impossibile la decodifica. ( Con la brute-force sarebbe una sfida... )
-
@PaTeR said:
Vedi, il problema è la sicurezza del trasferimento dei dati dal client al server. Col Java possiamo hashare la stringa in anticipo rendendo impossibile la decodifica. ( Con la brute-force sarebbe una sfida... )
Ho capito, volevo dire anche che in alcuni siti mettono un numero casuale da riscrivere, sai come funziona e se è sicuro???
L'ho visto anche in quello di MSN quando fai un nuovo accountCiao