• User

    autenticazione

    mi servirebbe qualche opinione riguardo al seguente script di autenticazione, specialmente dal punto di vista della sicurezza.

    
    elseif ($_POST["action"]=="login") // Login
                {
                     $username=@trim(@substr($_POST['user'], 0, 9));
                      $password=@md5(@trim(@substr($_POST['pass'], 0, 31)));
                    $sql=sprintf("SELECT id, user, pass FROM members WHERE user='%s' AND pass='%s' LIMIT 1", 
                    get_magic_quotes_gpc() ? $username : addslashes($username), 
                    get_magic_quotes_gpc() ? $password : addslashes($password)); 
                       $query = mysql_query($sql) or die(mysql_error());
                     $loginFoundUser = mysql_num_rows($query);
                    $array = mysql_fetch_array($query);
                          if ($loginFoundUser) 
                            {
                                // Assegna le variabili di sessione "username" ed "userid" che verranno usate per l'autenticazione
                                $_SESSION['userid'] = $array['id']; 
                                $_SESSION['username'] = $username;          
                                header("Location: index.php");
                                exit();
                              }
                          else 
                            {
                                $_SESSION['messaggio'] = "Autenticazione non riuscita.";
                                header("Location: login.php");
                                exit();
                            }
                }
    
    

  • User Attivo

    Che dire... in genere le sessioni non sono il metodo più sicuro per proteggere dei dati però dipende anche dal valore dei dati e dal livello di sicurezza che serve...

    Ci sono varie strade per rendere più sicuro un login, una è quella di usare apache, invece esiste un'altro modo per creare delle sessioni sul database

    in pratica invece di crare una sessione crei un record con un id univoco e ad ogni pagina controlli se il record è presente, con una data puoi impostare anche la scadenza di questa sezione da db!

    Però questa opzione è molto complicata se puoi è meglio usare apache con .htaccess e .htpasswd qui trovi molte guide su come fare....


  • User Attivo

    Dai uno sguardo ad Auth di pear
    xxxxx://pear.php.net/package/Auth/
    se nessuno mi smentisce non è male riguardo la sicurezza


  • User Attivo

    Il modello di autenticazione che hai creato mi piace molto. Anche quello che diceva gabriele riguardo l'autenticazione con le sessioni nel database e' altamente professionale. Un po di tempo l'ho fatto e' abbastanza ingegnoso ma poi non ho completato il lavoro.

    Per quel che riguarda Apache invece, l'autenticazione che consiglio e' quella digest, solo che non e' molto usata per via del fatto che non tutti i browser web la supportano, escludo categoricamente AuthType Basic di Apache se non si ha la disponibilita di sfruttare il protocollo cifrato.

    In conclusione il tuo script sembra buono pero' proverei a seguire il consiglio di gabriele riguardo le sessioni nel database.


  • User

    Grazie per le risposte...
    sinceramente avevo proprio dimenticato l'opzione "apache" e tutto sommato mi sembra la più veloce...
    però dato che devo tenere sempre pronta l'alternativa in php darò uno sguardo anche alle sessioni nel database... avete qualche link da spulciare?