Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Sicurezza sito

Visualizzazione discussione

  1. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Allora, sha1() per la sicurezza ha lo stesso esito di md5(), ovvero non usarlo.
    Poi ovvio dipende da cosa devi fare, e quale potrebbe essere il target finale del tuo sito, ma parlando di best practice costa nulla usare sha1() o hash( 'sha256', ... ) o superiore.
    All fine ti ritrovi un prodotto con una sicurezza intrinseca superiore, poi ovvio che se la password è quella dell'agente segreto Panariello, il codificarla a 16/32/64/128/256/enne byte di roba non conta nulla.
    Per prima cosa una password deve essere lunga almeno 8 caratteri per stare ragionevolmente sicuri per un bel pezzo, poi ovvio anche qui dovrebbe comunque essere non presente nei dizionari.
    Ci sono molte routine in giro che permettono di generare password a caratteri casuali, io ne uso una mia molto semplice ma comunque valida.
    Codice PHP:
    /** *    Genera un numero unico da usarsi per password e salt. 
    *     $length = numero di caratteri da usarsi in uscita.
    */
    function makeUnique $length=16 ) {   
    $salt       'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $len        strlen$salt );
    $makepass   '';   
    mt_srand10000000 * (double)microtime() );   
    for ( 
    $i 0$i $length$i++ ) {
           
    $makepass .= $salt[mt_rand0$len )];   
    }
    return 
    $makepass;
    }    
    //    makeUnique() 
    Ovviamente l'utente poi la cambia in Panariello style
    Quello che faccio in realtà è sempre inviare la password in formato hash e in particolare uso sha512 per fare questo uso ( http://pajhome.org.uk/crypt/md5/ ) un file che trovo su quel sito e che è sha512.js ( ce ne sono altri, anche in md5 ) ho scelto di usare sha512 perché... non lo so mi piaceva
    Dopo tutto come dicevo prima, usare un hash più semplice non ha senso quindi preferisco giocare duro.
    Quindi nel database in realtà non metto l'hash della password ma l'hash dell'hash della password più il salt e quindi faccio una cosa del tipo:
    Codice PHP:
    $salt =hash'sha512'makeUnique64 ));
    $password hash'sha512'$_POST['pass'] . $salt ); 
    Dove $_POST['pass'] contiene già l'hash a sha512 proveniente dal form di login.

    Parlando di iscrizione, ovviamente dopo aver generata una password casuale da inviare all'email dell'iscritto, faccio quel lavoro, solo che prima di fare $salt e $password, cioè al posto di $_POST['pass'] se $pass = makeUnique( 10 ); ( password in chiaro da inviare via email ) poi $hashPass = hash( 'sha512', $pass );ovvero:
    Codice PHP:
    $pass makeUnique10 );
    $hashPass hash'sha512'$pass );
    $salt =hash'sha512'makeUnique64 ));
    $password hash'sha512'$hashPass $salt ); 
    Complicato? Giusto un filino
    Ma nemmeno tanto se segui la logica scopri che è semplice.
    Ultima modifica di Marcolino's; 18-03-2016 a 15:40

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.