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