Visualizzazione dei risultati da 1 a 3 su 3

Discussione: criptare password

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171

    criptare password

    Ho una formn con una casella password.
    nel effettuare il login prelevo la variabile cosi;
    $pass=$_POST(md5($password));

    poi quando la passo nella query devo sicuramente decriptarla., ma come??

  2. #2
    Quote Originariamente inviata da tigre2209 Visualizza il messaggio
    $pass=$_POST(md5($password));

    Ma cos'è quella roba lì?!?!?
    Stai criptando il NOME della variabile?

    A parte che $_POST è un'array per cui devi utilizzare le quadre e NON le tonde.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Quote Originariamente inviata da tigre2209 Visualizza il messaggio
    Ho una formn con una casella password.
    nel effettuare il login prelevo la variabile cosi;
    $pass=$_POST(md5($password));

    poi quando la passo nella query devo sicuramente decriptarla., ma come??
    Il codice che hai postato non è valido.
    forse intendevi:

    Codice PHP:
    $pass md5($_POST['password']); 
    In ogni caso non puoi decriptare un md5 perché non è un algoritmo reversibile. Il modo per controllare se una password inserita in un form coincide con quella salvata nel database è quello di criptare la password inserita dall'utente in fase di login e confrontarne il risultato con quella salvata nel database.
    Per far recuperare la password smarrita ovviamente non puoi inviargliela per email (perché nessuno la può conoscere*), ma ne devi generare una nuova.

    * In realtà esistono, anche online e free, delle tabelle (denominate "rainbow tables") dove sono associati gli MD5 di tante stringhe pseudo-intellegibili e/o comuni. Per cui se la tua password criptata è "5ebe2294ecd0e0f08eab7690d2a6ee69" allora è facilmente scopribile che la parola corrispondente è "secret". Ma se la tua password criptata è "749de9f3ab012335cde4a1698fd40a24" difficilmente in qualche tabella risulterà la corrispondenza con "Ka$tah!1!192pippoplutoepaparino".

    Per questo motivo si è anche soliti utilizzare un SALT. Ovvero una stringa o sequenza di byte da concatenare con l'input dell'utente in modo da rendere inefficaci le Rainbow Tables.

    Es:

    Codice PHP:
    /** REGISTRAZIONE***/
    $salt "9&/$rst1\\92783**";
    $password md5($salt.$_POST['pass']);
    // inserimento della password nel database


    /** LOGIN***/
    $salt "9&/$rst1\\92783**";
    $login_password md5($salt.$_POST['loginpass']);
    // query 
    $qry 'SELECT id FROM users WHERE username = :username AND password = :login_password'
    // etc 

    Tuttavia, anche con queste precauzioni, ci sono altri 2 problemi:

    1) Il SALT è inefficace se si verificano determinate circostanze (salt all'inizio della stringa e dimensione nota). Non chiedermi di più
    2) E' possibile (improbabile ma possibile) che un qualsiasi MD5, con salt o meno, collida con l'md5 di una stringa più comune. Vuol dire che se tu scegli una password complessissima il cui MD5 per puro caso coincide con l'MD5 della parola "secret", non importa se il login lo faccio con "secret" o con la tua password complessa: entrerò dentro comunque.

    Per questo motivo non si usa più l'MD5 come algoritmo per criptare le password, ma si usano funzioni più avanzate basate sulla funzione crypt di PHP. (Personalmente mi baso sulla classe \Zend\Crypt\Password\Bcrypt dello Zend Framework).

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.