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:
dopo di che, nella pagina che deve effettuare la verifica eseguo il seguente controllo: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; }
è abbastanza valido questo metodo in termini di sicurezza?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); } ?>

Rispondi quotando