Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Login MD5

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    273

    Login MD5

    Ragazzi sto implementando un login in questo modo:
    # Al login, il server genera un valore casuale, lo memorizza in una variabile di sessione e lo scrive fisicamente nel codice Javascript contenuto nella pagina, assegnandolo ad una variabile Javascript.

    # Quando l'utente invia il form con i dati, viene chiamata una funzione Javascript che calcola innanzitutto l'md5() della password, e poi l'informazione combinata, ovvero l'md5() del "valore casuale più l'md5() della password".

    # I contenuti del campo della password nel form vengono cancellati e la funzione Javascript assegna l'informazione combinata ad un campo hidden del form.

    # I contenuti del form vengono finalmente inviati al server attraverso il metodo post.

    # L'eventuale intercettatore intercetta il valore combinato, ma non se ne farà nulla.

    # Il server riceve il valore combinato e controlla che sia effettivamente ciò che esce fuori facendo l'md5() del valore casuale (che sta in una variabile di sessione) con l'md5() della password (che sta nel database).

    # Se i valori corrispondono allora l'utente ha inserito la giusta password e il sistema di autenticazione considera l'utente autenticato.

    Questa è la pagina di login:
    Codice PHP:
    <?php 
    //Restituisce l'attuale data e orario misurata in numero di secondi dalla Unix Epoch
    $idSessione time();
    //La variabile di sessione challengeword è il valore casuale con cui la password inserita dall'utente viene combinato. 
    $_SESSION['challengeword'] = md5(rand(0,10000));
    ?>
    <script type="text/javascript" src="inc/md5.js"></script>
    <script type="text/javascript">
    <!--
    function encrypt () {
    <? echo "var challengeword = '" $_SESSION['challengeword'] . "' ;" ?>
    var psw = document.login.psw.value ; 
     if (psw) {
     psw = hex_md5 (psw) ;
     psw = hex_md5 (psw + challengeword) ; 
     document.login.psw.value = '' ;
     document.login.md5ed.value = psw ;
     }
     
    }
    // -->
    </script>
    <form name="login" method="post" action="doLogin.php" onsubmit="encrypt () ">
    Nome utente: <input type="text" name="username">
    Password <input type="password" name="psw">
    <input type="hidden" name="md5ed" value="">
    <input type="hidden" name="login" value="1">
    <input type="submit" value="Login">
    </form>
    Ora il problema sta nella pagina di controllo della password.
    In pratica non riesco a fare la decriptazione della password + la challengeword
    Questa è la pagina incriminata:
    Codice PHP:
    <?
    session_start
    ();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>NoiDelBds</title>
    <script type="text/javascript" src="inc/md5.js"></script>
    <script type="text/javascript">
    <!--
    <? echo "var challengeword = '" $_SESSION['challengeword'] . "' ;" ?>
    <? 
    echo "var md5ed = '" $_POST['md5ed'] . "' ;" ?>
     var psw = hex_md5 (md5ed - challengeword) ;
     alert(psw);
    // -->
    </script>

    </head>

    <body>
    </body>
    </html>
    Qualcuno sa aiutarmi???

  2. #2
    Scusa, ho cercato di capire la logica del tuo sistema di login, forse sono io che non capisco, però mi sono un po perso in alcune parti...
    Penso però, che se vuoi fare una cosa ancora più "sicura" potresti fare l'md5 del valore casuale e della password combinati insieme, così ti viene generata una sola stringa md5 che è ben più difficile da decifrare, fai un passaggio in più ma incrementi la sicurezza.
    In ogni caso, per quanto riguarda il tuo problema, non riesco a capire perché vuoi usare javascript, javascript ti servirebbe soltanto per inserire il valore md5 del campo password nel campo hidden, ma non per altro, tutti gli altri controlli successivi li puoi fare con PHP, o sbaglio?

  3. #3
    Originariamente inviato da thunderlips
    Penso però, che se vuoi fare una cosa ancora più "sicura" potresti fare l'md5 del valore casuale e della password combinati insieme...
    avevo fatto una pillola sul login con invio in md5 ... di fatto non serve "a niente" (non garantisce sicurezza, tenta solo di forviare ed evita sql injections).

    il valore casuale viene assegnato alla sessione, le sessioni non sono un metodo sicuro se il server non è dedicato, l'invio del valore random rimane comunque trasparente, quindi al limite bisognerebbe settare un cookie e rileggerlo con JS .... ma anche il cookie di fatto è un invio in chiaro di un dato.

    In sintesi, stai perdendo tempo per un sistema che comunque non sarà più sicuro di una normae login, a meno che tu non stia su SSL, ma aquel punto tutti questi giri diventerebbero pressapoco inutili
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    273
    Originariamente inviato da thunderlips
    Scusa, ho cercato di capire la logica del tuo sistema di login, forse sono io che non capisco, però mi sono un po perso in alcune parti...
    Penso però, che se vuoi fare una cosa ancora più "sicura" potresti fare l'md5 del valore casuale e della password combinati insieme, così ti viene generata una sola stringa md5 che è ben più difficile da decifrare, fai un passaggio in più ma incrementi la sicurezza.
    In ogni caso, per quanto riguarda il tuo problema, non riesco a capire perché vuoi usare javascript, javascript ti servirebbe soltanto per inserire il valore md5 del campo password nel campo hidden, ma non per altro, tutti gli altri controlli successivi li puoi fare con PHP, o sbaglio?
    I valori sono già combinati insieme se guardi questa porzione di codice :
    codice:
     psw = hex_md5 (psw) ;
    psw = hex_md5 (psw + challengeword) ;
    noterai che sommo la psw digitata dall'utente con il valore random generato dal server.
    In questo modo ho un'unico valore che devo decriptare nella pagina di controllo del login.
    Riguardo PHP o Javascript non credo ci siano sostanziali differenze, in questo caso mi è andato di usare javascript ma non per qualche specifica ragione.

    Originariamente inviato da andr3a
    avevo fatto una pillola sul login con invio in md5 ... di fatto non serve "a niente" (non garantisce sicurezza, tenta solo di forviare ed evita sql injections).

    il valore casuale viene assegnato alla sessione, le sessioni non sono un metodo sicuro se il server non è dedicato, l'invio del valore random rimane comunque trasparente, quindi al limite bisognerebbe settare un cookie e rileggerlo con JS .... ma anche il cookie di fatto è un invio in chiaro di un dato.

    In sintesi, stai perdendo tempo per un sistema che comunque non sarà più sicuro di una normae login, a meno che tu non stia su SSL, ma aquel punto tutti questi giri diventerebbero pressapoco inutili
    Scusa non capisco cosa vuol dire questa frase:
    codice:
    il valore casuale viene assegnato alla sessione, le sessioni non sono un metodo sicuro se il server non è dedicato
    Vorresti dire che nel mio caso il valore random che assegno alla variabile di sessione può essere intercettato???Puoi spiegarmi sta cosa che mi interesserebbe..
    Grazie!

  5. #5
    Originariamente inviato da pancu
    Vorresti dire che nel mio caso il valore random che assegno alla variabile di sessione può essere intercettato???Puoi spiegarmi sta cosa che mi interesserebbe..
    Grazie!
    se non sei in un server configurato ad hoc o sei in un server virtuale è facile che le sessioni vengano semplicemente salvate nella tmp di sistema, condivisa da più utenti e leggibile da tutti.

    Ma a prescindere da questo, ammesso che tu sia su un server dedicato, nel momento in cui comunichi al client questo fantomatico valore random lo hai già inviato in chiaro, sia che tu l'abbia salvato sulla sessione che non, visto che la sessione non è leggibile dal client e che devi quindi mostrare il valore per assegnarlo o comunicarlo
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.