Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 42
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40

    login php cookie ma senza db: sicuro?

    Ciao, mi hanno detto che un login php basato su cookie senza interazione con database (quindi password e username fissi) è molto sicuro, praticamente impossibile da scavalcare se non guardando direttamente a livello server il file dove sono presenti le variabili. E' vero?
    In pratica c'è un form html che invia le variabili user e pass ad un file controlla.php che confronta le variabili inviate rispetto a quelle presenti nel file controlla.php: se non coincidono l'accesso è vietato, se coincidono viene creato un cookie

    esempio http://www.appuntiphp.com/2010/02/lo...-database.html

    Quali i rischi?come renderlo impenetrabile?

    grazie

    Lore

  2. #2
    Guarda, quell'esempio e' in assoluto il piu' ridicolo sistema di autenticazione che abbia mai visto. User e pass sono scritti in chiaro nel codice dello script, ma questo e' il meno perche' basta settarsi manualmente un cookie di nome login contenente OK (anzi, contenente qualsiasi cosa) per bypassare ogni controllo

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    ciao,
    in effetti l'esempio riportato è un po' semplificato, l'esempio che mi hanno detto nel cookie setta anche l'orario, in modo da renderlo meno riproducibile..
    Ma c'è un modo senza dover usare sessioni per fare qualcosa di sicuro ma molto semplice (Non mi servono cose sofisticate ajax & co.)

    Lore

  4. #4
    Per un sistema di login (ragionevolmente) sicuro non servono le sessioni, ma comunque piu' semplice lo fai, meno sicuro sara'.
    Abbiamo parlato diffusamente della cosa in questo thread: http://forum.html.it/forum/showthrea...readid=1420672

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    Ciao,
    ho letto con interesse il thread da te segnalato. Ma senza scomodare il database non c'è qualcosa di elementare ma molto sicuro? Ho a disposizione un server apache e supporto ssl. L'utente sarebbe unico, amministratore, per cui memorizzare nel db mi sembra eccessivo..
    Mi dici che le user e password non vanno memorizzate in chiaro nel file php, ma non è uso comune inserire i dati di configurazione (parametri database, eventuali parametri ft..etc) in file tipo config.php? ciao e grazie
    Lore

  6. #6
    Originariamente inviato da Flaquiz
    qualcosa di elementare ma molto sicuro?
    NO!

    le cose elementari difficilmente saranno molto sicure... però occorre dire che il livello di protezione deve essere proporzionato a ciò che devi proteggere.

    Su questo forum mi dissero: "E' inutile costruire un bunker se poi devi custodire una casetta con gli attrezzi... in questi casi basta un buon lucchetto..."

    Pertanto io modificherei lo script proposto da te in questo modo...


    setting.php
    Codice PHP:
    <?php
    /*rimuovendo i commenti...*/
    /*era solo per spiegare lo script*/
    $username_hash '831a427b0f389a1ee75624d6afee791c'// md5('oly1982')
    $password_hash '5f4dcc3b5aa765d61d8327deb882cf99'// md5('passowrd') 
    ?>


    login.php
    Codice PHP:
    <form method="post" action="login.php">
    Username
    <input type="text" name="username">

    Password
    <input type="password" name="password">


    <input type="submit" name="login" value="Login">
    </form>


    <?php
        
    if ($_POST["login"] != "")
        {
        
    sleep(5); // protezione rozza (ma efficace) dai brute force
        
    require('setting.php');
            
    $username md5($_POST["username"]);
            
    $password md5($_POST["password"]);
            if (
    $username == $username_hash && $password == $password_hash)
            {
            
    $timestamp_di_oggi mktime(000date('n'), date('j'), date('Y'));
            
    setcookie("login"md5($timestamp_di_oggi.$password_hash));
                echo 
    "Benvenuto!

    "
    ;
                echo 
    "[url='privata.php']ENTRA[/url]";
            }
            else
            {
                echo 
    "Accesso negato!";
            }
        }
    ?>
    privata.php
    Codice PHP:
    <?php
    require('setting.php');
    if(isset(
    $_COOKIE['login']))
        {
        
    $timestamp_di_oggi mktime(000date('n'), date('j'), date('Y'));
        if(
    $_COOKIE['login']!=md5($timestamp_di_oggi.$password_hash))
            {
            exit(
    "Accesso negato!");
            }
        }
    else
        {
        exit(
    "Accesso negato!");
        }
    ?>
    sia ben chiaro non è il massimo della sicurezza ma è un mediocre sistema per proteggere qualche pagina...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    Ciao Oly,
    grazie davvero. Cercavo proprio qualcosa del genere. Per aumentare ancora di più la sicurezza secondo te potrei aggiungere oltre al timestamp di controllo anche un generatore di token casuale? (è un'idea di 'stanotte )
    In pratica quando effettuo il login viene generata una password aggiuntiva casuale e sempre diversa ad ogni login, questa viene salvata su database e settata come nome del cookie (meglio il nome oppure aggiungerla di seguito al timestamp?). A questo punto, quando nelle pagine effettuo il controllo, vado a cercare nel database l'ultima password casuale aggiornata (update), la comparo con il nome del cookie oppure con il timestamp+token e se tutto coincide visualizzo, altrimenti blocco. Può funzionare? Il sistema mi serve per un cms. Ciao e grazie ancora.
    Lore

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    Aggiungo che md5 è un algoritmo ormai insicuro: opterei per qualcosa che sia ALMENO sha1...

    Per quanto riguarda il fatto di generare un hash diverso da memorizzare nel database, a quel punto, ti conviene fare tutto da db e lasciar perdere i cookie. Personalmente, non ho mai trovato i cookie sicuri... se usi algoritmi robusti e una password tosta, è sufficiente. Tanto, se ti devono bucare, ti bucano lo stesso
    Scherzi a parte, io farei tutto da db.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    ciao atsap, grazie del consiglio sha1.
    ma fare tutto da db non è un passaggio in più e dunque più rischioso se manca qualche accorgimento? come si aggira un cookie con timestamp + eventuale one time password?

  10. #10
    Utente di HTML.it L'avatar di thor92
    Registrato dal
    Sep 2008
    Messaggi
    89
    Originariamente inviato da Flaquiz
    come si aggira un cookie con timestamp + eventuale one time password?
    anche ammesso e non concesso che qualcuno qui lo sappia non penso che te lo dicano...

    credo vada anche contro al regolamento...

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.