Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Modo sicuro "Ricorda login" con cookie

    Ho creato un login con sessioni e Database, ho anche creato un'opzione con la quale l'utente salva un cookie composto da MD5(username)+MD5(password), per ricordare l'accesso.

    DOMANDA: E' sicuro fare così? oppure devo attuare un'altro metodo?
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  2. #2
    inanzitutto se hai solo gli md5 come riconosci l'utente?

    in secondo luogo.. beh sì.. io utente "guidoz" per potermi autenticare come "gm" dovrei conoscere anche la password di gm. Se tu facessi l'md5 del solo username, io potrei fare l'md5 di qualsiasi useername ed entrare

    In sostanza.. è la password che protegge davvero... ti basterebbe solo quella (con l'user per poterlo riconoscere).... anche non criptata

  3. #3
    in pratica uso questa pratica funzione per capire se l'utente ha il cookie o meno:

    Codice PHP:
    function islogged() {
        global 
    $connessione;
        if (
    $_SESSION['loggatowj'] == 1) {
            return 
    true;
        } else {
            if (!empty(
    $_COOKIE['areawj'])) {
                
    $hashemail substr($_COOKIE['areawj'],0,32);
                
    $hashpassword substr($_COOKIE['areawj'],32,32);
                
    $query_wj "SELECT * FROM wj WHERE MD5(email)='".$hashemail."' and MD5(password)='".$hashpassword."'";
                
    $result_wj mysql_query($query_wj$connessione) or die(mysql_error());
                
    $totalRows_wj mysql_num_rows($result_wj);
                if(
    $totalRows_wj == 0) {
                    
    setcookie ("areawj"""time() - 3600);
                    return 
    false;
                } else {
                    
    $row_wj mysql_fetch_assoc($result_wj);
                    
    $_SESSION['loggatowj'] = 1;
                    
    $_SESSION['idwj'] = $row_wj['id'];
                    
    $_SESSION['nomewj'] = $row_wj['nome'];
                    
    $_SESSION['emailwj'] = $row_wj['email'];
                    return 
    true;
                }
            } else {
                return 
    false;
            }
        }

    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  4. #4
    mah.. secondo me l'id (che in questo caso è una e-mail) la puoi mettere tranquillamente in chiaro nel cookie.. tanto anche se io la cambio e ci metto la tua non entro s enon ho la password.
    Questo è il primo punto...

    Il fatto che salvi anche la apssword è giusto, perchè se tu nel cookie salvassi solo un id, io potrei cambiare l'id ed entarre come un'altra persona... ma se c'è un'altra informazione che io non posso conoscere.. allora m'attacco anche cambiando l'id.
    E chiaramente se conosco la password l'ultimo dei tuoi problemi è che io possa cambiarla nel cookie.
    E a questo punto anche la password potrebbe tranquillamente essere in chiaro... a chi la devi nascondere? al suo stesso proprietario?

    Se poi non vuoi lasciare la password nel cookie perchè qualcuno potrebbe rubare il cookie al tuo utente e da lì risalire alla password... allora neanche la password md5 è sicura ^_^
    Se vuoi essere paranoico e on lasciare tutto in chiaro, puoi fare così:

    id|md5(id+password)

    così tu hai l'id per estrarre il mio record dal database (senza fare l'md5 degli id ogni volta).. e quindi fai, solo una volta, l'md5 dell'id e della password e vedi se corrisponde all'md5 nel cookie.
    Dall'altro lato, se un attaccante prendesse quell'md5.. difficilmente riuscirebbe a risalire all'originale.

    Ancora meglio sarebbe così:
    id|md5(tuapassword+passwordutente)

    dove la tua password è uguale per tutti ed è una stringa possibilmente alfanumerica un po' complessa. A quel punto anche avendo l'user id e l'md5... un attaccante non riuscirebbe a risalire alla stringa composta dalla concatenzazione delle due password (se anche quella dell'utente fosse "mamma"... cioè una cosa banale, ci sarebbe la tua a complicare il tutto)


  5. #5
    si, ma come faccio poi a trovare l'occorrenza nel database se cripto la password dell'utente insieme ad una mia? la query nn saprei come strutturarla mmm
    Il 90% dei problemi di un pc si trova
    tra la tastiera e la sedia.

  6. #6
    Originariamente inviato da hacker_nait
    si, ma come faccio poi a trovare l'occorrenza nel database se cripto la password dell'utente insieme ad una mia? la query nn saprei come strutturarla mmm
    il record lo prendi con l'id.. la password la leggi in corrispondenza dell'id trovato... la estrai e ne fai l'md5 da php..

  7. #7
    Originariamente inviato da }gu|do[z]{®©
    a questo punto anche la password potrebbe tranquillamente essere in chiaro... a chi la devi nascondere? al suo stesso proprietario?
    a grandi linee hai ragione ... ma non dimentichiamo che IE, ed ultimamente ho visto hacks strani anche per FF, permette di salvare virus, trojan e worms direttamente nella cartella con i cookies, sotto forma di file mascherato.


    Permettere il salvataggio di utente e password sui cookie, quindi, non è mai una procedura sicura e non a caso i servizi on-line seri non permettono di farlo.


    L'unico modo per farlo e stare quasi tranquilli è salvare tali dati con blowfish o qualche crypting serio e tenersi la salt o chiave che sia solo sul server.

    Fatto questo solo uno screen reader spia potrà risalire ai dati cryptati del cookie una volta arrivati nella pagina, leggendosi semplicemente la form.




    Detto questo ... se non è una banca o non ha dati sensibili, che razzo te ne frega ? salva tutto sui cookie e cavoli loro se perdono i dati
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Originariamente inviato da andr3a
    L'unico modo per farlo e stare quasi tranquilli è salvare tali dati con blowfish o qualche crypting serio e tenersi la salt o chiave che sia solo sul server.
    sì, che poi è quelllo che gli ho consigliato dopo se vuole il livello di sicurezza paranoico

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.