Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472

    [mysql] Come salvare la password nel db?

    Leggendo i primi esempi di mysql e php ho sempre letto di salvare semplicemente la password.

    Leggendo la "guida sicurezza di php" a questo link letto invece È prassi consolidata che le password in chiaro non vengano mai memorizzate, ma, al loro posto, venga memorizzata la loro "firma" (one way hash) ricavata tramite una funzione di digest, tipo MD5 o SHA1 .

    Vi chiedo: per quale motivo viene preferito questa decodifica?

    Nel caso in cui mi consigliate di far così potete darmi dei link dove posso documentarmi maggiormente di come fare questa codifica.

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di zoseppe
    Registrato dal
    Jan 2005
    Messaggi
    306
    Se qualche malintenzionato riuscisse ad accedere al tuo sistema, e non si usasse l' "hash", vedrebbe tutte le password di tutti utenti perchè avresti le passwords in chiaro! Se invece usi un algoritmo one-way , hai il vantaggio di avere stringhe dalle quali non si può risalire alla stringa originale: il malintenzionato non potrebbe utilizzare quelle passwords!(NB hashare != criptare).
    Quando setti la password di un utente tramite mysqladmin questa viene automaticamete hashata. Se invece lo inserisci tramite query, direttamente nella tabella users, usa la funzione password.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Ho visto queste funzioni:

    PASSWORD, MD5, SHA1
    con i relativi esempi:
    SELECT PASSWORD('albero');
    -> *7D69DA9FAAC2BF8B8181DCABB4E38B9DA1916389
    SELECT MD5('albero');
    -> 338a96591f778e7af4cce7b601d785d2
    SELECT SHA1('albero');
    -> 0389de785fafb5418e0221c49bb9545a9a82a2b1

    mentre credo che non faccia al nostro caso AES_ENCRYPT visto che il processo è reversibile.

    Generalmente su quale delle tre ci si orienta? Per qualcuna delle tre ci sono delle controindicazioni?

    Grazie del chiarimento!

  4. #4
    Utente di HTML.it L'avatar di zoseppe
    Registrato dal
    Jan 2005
    Messaggi
    306
    Originariamente inviato da mld
    mentre credo che non faccia al nostro caso AES_ENCRYPT visto che il processo è reversibile.
    Dipende cosa vuoi fare: con questa, ad esempio, potresti implementare un sistema per rispedire la password all'utente che l'avesse dimenticata...(da valutare bene!!!).

    Originariamente inviato da mld
    Per qualcuna delle tre ci sono delle controindicazioni?
    Non saprei proprio, meglio il parere di chi è più informato!!!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Rifacendomi a quello che mi hai risposto inizialmente Se qualche malintenzionato riuscisse ad accedere al tuo sistema, e non si usasse l' "hash", vedrebbe tutte le password di tutti utenti perchè avresti le passwords in chiaro! Se invece usi un algoritmo one-way , hai il vantaggio di avere stringhe dalle quali non si può risalire alla stringa originale: il malintenzionato non potrebbe utilizzare quelle passwords!(NB hashare != criptare). ho pensato che anche AES_ENCRYPT non fosse buono per noi visto che il malintenzionato di turno potrebbe anche in questo caso con l'operazione inversa trovare la password... O sbaglio???

    Tu personalmente quale usi?

  6. #6
    Utente di HTML.it L'avatar di zoseppe
    Registrato dal
    Jan 2005
    Messaggi
    306
    Originariamente inviato da mld
    Rifacendomi a quello che mi hai risposto inizialmente: Se qualche malintenzionato riuscisse ad accedere al tuo sistema, e non si usasse l' "hash", vedrebbe tutte le password di tutti utenti perchè avresti le passwords in chiaro! [...]
    Chiedo scusa forse sono stato ambiguo: le password sarebbero inutilizzabili anche se venissero criptate!
    La funzione AES_ENCRYPT richiede l'inserimento anche una chiave, e per poter decriptare il "malintezionato" dovrebbe avere questa chiave...non ti so dire se esistono ( credo di si) dei metodi per forzare questa funzione ed eventualmente, quanto siano efficaci! Per questo ho auspicato l'intervento di qualcuno più informato di me!
    Ad ogni modo guarda qui.

  7. #7
    io solitamente uso md5 ma gli altri due hash sono simili come funzionamento

    se devo inviare la password all'utente ne genero una nuova temporanea con una scadenza e la invio per email, se viene usata entro il periodo di validità la sostituisco alla vecchia, altrimenti scade e non è + utilizzabile

    esempio di tabella user

    id|username|password|tmppassword|scadtemp

    password e tmppassword sono hash md5 e tmppassword la considero valida solo se NOW() è < scadtemp che viene generato insieme a tmppassword

    quando controlli se i dati sono giusti puoi aggiungere nella query
    SELECT if(md5(passworddelform)=tmppassword, 1, 0) as aggiorna .......
    in questo modo se $row['aggiorna'] assume il valore 1 fai
    UPDATE user SET password=tmppassword, tmppassword='', scadtemp='' WHERE username='$row['username']'

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Grazie per le vostre risposte!

    Un'ultima domanda.
    Ho visto che la password viene hashata in una stringa di 32 caratteri con md5 e di 40 caratteri con sha1. E questo vale per qualsiasi lunghezza della password originaria.
    Ma per la password originaria c'è una lunghezza consigliata? Cioè c'è una lunghezza ottimale per cui l'algoritmo è in qualche modo "ottimizzato"?
    Chi usa md5 e sha1 invita gli utenti a mettere una password di x caratteri o comunque compresa fra x e y caratteri?

  9. #9
    per la lunghezza della password io uso a livello di form uno script in javascript che man mano che l'utente scrive gli consiglia la password ottimale. Per quanto le so una buona password dovrebbe avere azAZ00 ossia essere alfanumerica ed avere lettere maiuscole.

    spero di essere stato utile.

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Il fatto che debbano essere preferibilmente alfanumeriche mi è confermato da più parti.

    Al di là del conteggio della password ottimale che per ora è superfluo per le mie esigenze, chiedevo proprio una lunghezza standard consigliata che credo potrebbe essere dai 5-6 fino ai 10-12 caratteri...

    Oltre ad avere il js che indica la lunghezza ottimale hai messo anche il controllo che la password sia alfanumerica? E se l'utente ignora l'aiuto della lunghezza ottimale hai messo un numero massimo di caratteri? Se sì (ma immagino di sì) quanti?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.