Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Sicurezza : Il login.

  1. #1

    Sicurezza : Il login.

    Ciao a tutti , apro questo topic per avere dei suggerimenti , che credo possano servire a tutti.
    Dopo la registrazione - resa sicura grazie ai vostri aiuti - , ho creato il login , o almeno credo che sia completo.
    http://www.narakuprova.altervista.org/home.php

    Il tutto funziona , ma vorrei sapere se un login creato in questo modo è abbastanza sicuro ,e se è completo.

    Il codice della pagina login è

    Codice PHP:
    <?php
    /* Conneto al database */
    $connessione mysql_connect("localhost","narakuprova","*****")or die("Connessione non riuscita: " mysql_error());
    mysql_select_db("my_narakuprova"$connessione) or die("Errore nella selezione del database");

    /* Ricavo nome e pass */
    $nome $_POST['nome'];
    $pass $_POST['pass'];

    /* Creo variabile di avanzamento */
    $ok true;

    /* Verifico che non siano vuote */
    if (empty($nome) || empty($pass))
    {
        
    $ok false;
        echo 
    " Devi inserire un Nick o una Password ";
    }

    /* Verifico che il nick sia presente nel database e a quale pass è associato*/
    if ($ok === true
    {
    $nickdata "SELECT nome FROM personaggio WHERE nome='".mysql_real_escape_string($nome)."'";
    $querynick mysql_query($nickdata,$connessione);
    $nicktrovati mysql_num_rows($querynick);
        if (
    $nicktrovati 0
        {
            
    $ok false;
            echo 
    "</br>" " Non esiste alcun account registrato con quel nome ";
        }
        else 
            
    $nickpass "SELECT pass FROM personaggio WHERE nome='".mysql_real_escape_string($nome)."'";
            
    $querypass mysql_query($nickpass,$connessione);
            
    $passtrovata mysql_fetch_array($querypass) or die(mysql_error());
            
            if(
    $pass == $passtrovata['pass'])
            {
                
    session_start();
                
    $_SESSION['login'] = true;
                echo 
    " Login effettuato con successo, verrai reindirizzato fra alcuni secondi ";
                echo 
    '<meta http-equiv="refresh" content="5;url=http://www.narakuprova.altervista.org/main.php"    />';
            }
            else
            {
                echo 
    " Hai sbagliato la password";
            }
    }
    ?>
    che ne dite ? cosa aggiungere ? il lavoro della sessione è giusto a quel modo ? come renderlo più sicuro ?

  2. #2
    generalizza i messaggi di errore, nel senso ritorna solo "username o password errati", altrimenti un attaccante sa che ha beccato un username valido e deve solo beccare la password... "solo" ovviamente, però lo aiuti così...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Ok , lo faccio. Altri consigli ^^ ?

  4. #4
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Si
    1. salva le password criptate (con sha1)
    2. segui il consiglio di Santino, ti permette anche di fare una sola query (non devi controllare separatamente user e pw)
    3. nel reindirizzamento prevedi anche il caso in cui questo non funzioni: aggiungi un link cliccabile dall'utente (come in questo forum)
    4. salva da qualche parte (in una tabella ad hoc o in quella utenti) l'ip e/o l'useragent con il quale è collegato l'utente. Quando verifichi l'autenticazione controlli che ci sia la variabile di sessione, ma controlli anche che ip e useragent siano corretti

  5. #5
    Sto seguendo tutti i vostri consigli , per adesso ne ho eseguiti 3 di 4 , in particolare i primi tre.
    Ma prima di proseguire con l'ip ell'useragent , mi sono ritrovato in un problema che prima non avevo. Ok cripto la pass, la riconosce esegue il login ( ho criptato anche in registrazione ovvio ) però non mi riconosce più l'apertura della sessione , come mai ?
    Non mi da l'errore, solo che quando mi reindirizza nella nuova pagina, è come se non fosse loggato ?.?
    Codice PHP:
    /* Cripto la pass */
            
    $criptpass sha1($pass);
            if(
    $criptpass == $confrontopass['pass'])
            {
                
    session_start();
                
    $_SESSION['login'] = true;
                echo 
    " Login effettuato con successo, verrai reindirizzato fra alcuni secondi ";
                echo 
    '<meta http-equiv="refresh" content="5;url=http://www.narakuprova.altervista.org/main.php"    />';
                echo 
    "</br>" "Se non vuoi attendere oltre, clicca il seguente link ";
                echo 
    '[url="http://www.narakuprova.altervista.org/main.php"] Click [/url]'

    Questo è il codice che legge
    Codice PHP:
    <?php 
    if ($_SESSION['login'] != ok)
    {
        echo 
    " Devi prima effettuare il login, sarai reindirizzato nella homepage";
        echo 
    '<meta http-equiv="refresh" content="5;url=http://www.narakuprova.altervista.org/home.php"    />';
        echo 
    "</br>" "Se non vuoi attendere oltre, clicca il seguente link ";
        echo 
    '[url="http://www.narakuprova.altervista.org/home.php"] Click [/url]';
    }
    else
    {
        echo 
    " benvenuto";
    }
    ?>

  6. #6
    Per evitare ulterioramente che si freghino la password, ti conviene la doppia criptazione con aggiunta di stringhe casuali
    esempio:
    Codice PHP:
    md5(sha1('akjSjsjHSs' $pass 'h2hs82hs')); 

  7. #7
    Non sarà un login di una banca, ma meglio essere sicuri xD
    Sai come mai non mi funge la sessione ?

  8. #8
    Codice PHP:
    if ($_SESSION['login'] != ok
    è sbagliato devi scrivere
    Codice PHP:
    if ($_SESSION['login'] != 'ok'

  9. #9
    Nada non funziona neppure in quel modo.
    Come mai ?

    Non mi assegna il valore true alla sessione.


    Edit :
    che stupido che sono , in una modifica ho dimenticato ad aprire la sessione nella pagina ricevente. Grazie lo stesso xD

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.