Benvenuti nella terza parte di questo articolo. Vi ricordo che potete trovare la precedente parte del tutorial a questo indirizzo e, inoltre, ribadisco nuovamente il nostro intento: Il tema centrale del tutorial proposto non è tanto la grafica, che potrete ovviamente modificare e personalizzare a vostro piacimento, ma la sicurezza! Vedremo, infatti, i migliori metodi per criptare le password, per resistere ai brute force e per difenderci dalle SQL injection. Anche in questa terza parte, a fine articolo troverete anche il codice sorgente pronto all'uso!
La pagina process_login.php
In questa pagina andremo, prima di tutto, ad inserire il codice della procedura di login che lavorerà in parallelo con la pagina functions.php. Ecco il file:include 'db_connect.php'; include 'functions.php'; sec_session_start(); // Inizializziamo la sessione sicura if (isset($_POST['email'], $_POST['p'])) { $email = $_POST['email']; $password = $_POST['p']; // Passiamo la password criptata if (login($email, $password, $mysqli) == true) { // Se il login riesce echo 'Hai effettuato l\'accesso!'; } else { // Se il login fallisce header('Location: ./login.php?error=1'); } } else { // Se la variabile non viene inviata alla pagina corretta echo 'Richiesta non valida!'; }
La pagina logout.php
Immediatamente dopo aver creato la procedura di login, dovremmo occuparci di costruire quella per il logout. La procedura per il logout deve contenere pochi e semplici passaggi: aprire una sessione sicura, distruggerla e redirectare l'utente verso un'altra pagina. Vediamo come:include 'functions.php'; sec_session_start(); $_SESSION = array(); // prelevo i parametri di sessione $params = session_get_cookie_params(); // Cancello i cookie setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]); // Distruggo la sessione session_destroy(); header('Location: ./');
La pagina di registrazione
Il seguente è il codice che dovrete utilizzare nel caso, all'interno di una pagina di registrazione, necessitate di codificare la password.// Raccolgo la password dal form $password = $_POST['p']; // Creo un salto unico $random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true)); $password = hash('sha512', $password.$random_salt); // Aggiungo i dati raccolti alla query if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)")) { $insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt); // Eseguo la query $insert_stmt->execute(); }
0 commenti:
Posta un commento