Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128

    sicurezza login e sessioni

    volevo avere alcuni consigli, pareri, critiche sul sistema di login che sto utilizzando.. principalmente nell'aspetta sicurezza..

    utilizzo una funzioncina per il login

    Codice PHP:
    function login($nickname$password) {

    ##SE I CAMPI OBBLIGATORI NON SIANO STATI COMPILATI##
    if (empty($nickname) OR empty($password)) {

    echo 
    "Campi non compilati";

    ##SE TUTTI I CAMPI OBBLIGATORI SONO STATI COMPILATI CONTINUO CON I CONTROLLI##
    } else {

    ##CONTROLLO CARATTERI##
    $nickname_controllato mysql_escape_string($nickname);
    $password_controllata mysql_escape_string(md5($password));

    ##GENERO SESSION KEY##

    $session_key codice_random(5);

    ##VERIFICO CHE L'UTENTE ESISTA##
    $sql "SELECT * FROM tw_utenti WHERE nickname = '$nickname_controllato' AND password = '$password_controllata'";
    $query = @mysql_query($sql);
    $row mysql_fetch_array($query);
    $row_n mysql_num_rows($query);

    ##se l'utente non esiste##
    if ($row_n == 0) {

    echo 
    "Utente non riconosciuto";

    echo 
    "<meta http-equiv=\"Refresh\" content=\"1; url=index.php\">";

    ##se l'utente esiste##
    } else {

    ##controllo che l'utente dopo la registrazione abbia attivato il profilo##
    if (empty($row[codice_attivazione])) {

    echo 
    "Utente riconosciuto";

    $_SESSION['nickname_controllato'] = $nickname_controllato;
    $_SESSION['password_controllata'] = $password_controllata;
    $_SESSION['session_key'] = $session_key;

    ##Aggiorno il profilo nel database con la nuova session key##
    mysql_query("UPDATE tw_utenti SET login_n = login_n+1, session_key = '$session_key' WHERE id_utente = '".$row['id_utente']."'") or die("Errore alla linea ".__LINE__.": ".mysql_error()) ;


    echo 
    "<meta http-equiv=\"Refresh\" content=\"1; url=index.php\">";

    } else {

    echo 
    "Utente non attivo";

    echo 
    "<meta http-equiv=\"Refresh\" content=\"1; url=index.php\">";

    }

    }

    }


    quando invece devo riconoscere l'utente eseguo questo codice

    Codice PHP:
    ####RICONOSCIMENTO UTENTE####

    $nickname_controllato $_SESSION['nickname_controllato'];
    $password_controllata $_SESSION['password_controllata'];
    $session_key $_SESSION['session_key'];

    ####CONTROLLO UTENTI####

    $sql_utente "SELECT * FROM tw_utenti WHERE nickname = '" $nickname_controllato "' AND password = '" $password_controllata "' AND session_key = '" $session_key "'";
    $query_utente mysql_query($sql_utente);
    $row_utente mysql_fetch_array($query_utente);
    $row_utente_n mysql_num_rows($query_utente);



    if (
    $row_utente_n == 0) {

    echo 
    "utente non connesso";

    } else {

    echo 
    "utente connesso";



  2. #2
    Io non sono un espertissimo di questo forum ma ti dico alcune cose che secondo le mie conoscenze farei:
    1) non mettere la password (seppur correttamente criptata) in sessione;
    2) la funzione login() io gli darei dei return e non degli echo così risulta essere più facile da gestire
    2) nella funzione login se il login è eseguito con successo inserisci in una variabile di sessione l'id corrispondente all'utente che può tornarti utile per query che farai in altri script
    3) il riconoscimento dell'utente mettilo in una funzione e non occorre che esegua la query... $_SESSION['nickname_controllato'] esisterà solo se l'utente si è loggato... pertato puoi fare
    Codice PHP:
    function utente_loggato()
       {
       if(isset(
    $_SESSION['nickname_controllato']))
          {
          return 
    TRUE;
          }
       else
          {
          return 
    FALSE;
          }
       } 
    poi sulla sicurezza entrano in gioco anche altri fattori
    sessio_save_path(), session_regenerate_id(), utilizzo dei token (ovvero il codice random che hai correttamente messo in sessione)...

  3. #3
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Solo per sapere...
    Perché usi un meta refresh per i controlli, che poi fai pure ricaricare la pagina e l'utente sta facendo una cosa che non vuole perdere...
    Usa invece AJAX che fa richieste al server quando vuoi e per quanto vuoi...

  4. #4
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    sicuramente passerò ad ajax... è solo una cosa momentanea questa

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 © 2024 vBulletin Solutions, Inc. All rights reserved.