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

    attivare account tramite email

    Desideravo sapere se é abbastanza sicuro questo metodo che utilizzo io per far attivare l'account tramite e-mail all'utente che si è appena registrato.
    recupero come chiave di validazione la session_id dell'utente e la memorizzo nel db dopo averla criptata con la funzione MD5.
    nell'email passo il link contenente come query-string sia l'indirizzo email inserito dall'utente che l'id_sessione criptato con la funzione MD5.
    "http://".$str_server.$str_script_name."?statoreg=verif&em ail=".$str_EmailAddress."&codattiv=".$str_cod_atti vazione;
    questo è il codice:
    codice:
     <?
    //------------------------------------------------------------------------------------------------
    // RECUPERO IL VALORE DI TUTTI I DATI INVIATI DALL'UTENTE E LI MEMORIZZO NELLE VARIABILI
    //------------------------------------------------------------------------------------------------
    $str_Username_old     = trim($_POST["Username_old"]);
    $str_Username_new     = trim($_POST["Username_new"]);
    $str_Password         = trim($_POST["Password"]);
    $str_Password_Check   = trim($_POST["Password_Check"]);
    $str_EmailAddress     = trim($_POST["EmailAddress"]);
    $str_EmailAddress_two = trim($_POST["EmailAddress_two"]);
    $str_data             = time();
    $str_ind_ip           = $_SERVER['REMOTE_ADDR'];
    $str_cod_attivazione  = MD5(session_id());
    $str_errore           = "";
    $str_stato            = 0;
    
    //dopo vari controlli su tutti i dati passati dall'utente procedo con la registrazione sul db e poi provvedo a inviare l'email.
        //------------------------------------------------------------------------------------------------
    // SE IL SETTING DEL GIOCO PREVEDE L'ATTIVAZIONE TRAMITE EMAIL - SI INVIA UNA EMAIL ALL'UTENTE APPENA REGISTRATO
    //------------------------------------------------------------------------------------------------
        If ($conf_email == 1) {
    		$msg_registrazione 	= $str031;
        	$str_oggetto			= $str030;
    		$str_server		= $_SERVER['HTTP_HOST'];
    		$str_script_name	= $_SERVER['SCRIPT_NAME'];
    		$str_link		= "http://".$str_server.$str_script_name."?statoreg=verif&email=".$str_EmailAddress."&codattiv=".$str_cod_attivazione;
    		$str_contenuto_email 	= $msg_email_att_reg;
    		$str_contenuto_email 	= str_replace("{name}",$str_Username_new,$str_contenuto_email);
    		$str_contenuto_email 	= str_replace("{old_name}",$str_Username_old,$str_contenuto_email);
    		$str_contenuto_email 	= str_replace("{email}",$str_EmailAddress,$str_contenuto_email);
    		$str_contenuto_email 	= str_replace("{ip}", $str_ind_ip,$str_contenuto_email);
    		$str_contenuto_email 	= str_replace("{link}",$str_link,$str_contenuto_email);
    		$headers		= "From: $name<$email>\nReply-to:$email";
    		
    		If (!@mail($str_EmailAddress,$str_oggetto,$str_contenuto_email,$headers)) {
    			echo $str207;
    		}
    	} else {
    		$msg_registrazione = $str028;
    	}
    dopo di che, nella pagina che deve effettuare la verifica eseguo il seguente controllo:
    codice:
    <?
    //------------------------------------------------------------------------------------------------
    // RECUPERO IL CODICE DI ATTIVAZIONE E L'EMAIL DELL'UTENTE CHE RICHIEDE LA CONVALIDA
    //------------------------------------------------------------------------------------------------
    $email 		= trim($_GET['email']);
    $codattiv 	= trim($_GET['codattiv']);
    
    If ($email != "" && $codattiv != "") {
    	
    	$conn  = connect();
        $query      =  "SELECT *
                        FROM ".$prefix_table."utenti
                        WHERE email = '".mysql_real_escape_string($email)."' 
                        AND cod_attiv = '".mysql_real_escape_string($codattiv)."'";
        $res        = mysql_query($query,$conn) or die ($str201.": ".mysql_error());
        
        if (mysql_num_rows($res) != 0) { // SE L'UTENTE VIENE TROVATO NEL DB PROCEDO CON L'ATTIVAZIONE DELL'ACCOUNT
        	$query  =  "UPDATE ".$prefix_table."utenti SET stato = 1
                        WHERE email = '".mysql_real_escape_string($email)."' 
                        AND cod_attiv = '".mysql_real_escape_string($codattiv)."'";
        	$res        = mysql_query($query,$conn) or die ($str201.": ".mysql_error());
        	
            //------------------------------------------------------------------------------------------------ 
            //VISUALIZZO UN MESSAGGIO DI BENVENUTO
            //------------------------------------------------------------------------------------------------
            messaggio_benvenuto($str032);
        
        } else {
        	
        	messaggio_errore($str208);
        }
        
        mysql_close($conn);
    
    } else {
        	
    	messaggio_errore($str208);
    
    }
    
    ?>
    è abbastanza valido questo metodo in termini di sicurezza?

  2. #2
    Up!

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.