crei la pagina token.php, e dentro il suo contenuto:
Codice PHP:
$_SESSION["myid_3"] = $_SESSION["myid_2"];
$_SESSION["myid_2"] = $_SESSION["myid"];
$_SESSION["myid"] = md5(rand(0,99).md5(microtime()).time());
La pagina token.php, non fà altro che generare un token. (Perchè salvarlo in più sessioni, ti starai chiedeno, la risposta è semplice: mentre fai il login, vengono cambiati più token, poichè si rigenera sempre uno nuovo, infatti solo con le sessioni puoi avere traccia di quelli creati.)
Adesso, se vuoi applicare il token al form di login, aggiungi questo: (Devi ovviamente includere la pagina token.php, in quella del login.php)
Codice PHP:
<input type="hidden" value="<? echo $_SESSION["myid"]; ?>" name="token">
Ed in fine, dove controlli che il login è esatto o meno, inserisci questo:
Codice PHP:
if($_POST["token"] == $_SESSION["myid_3"]){
//OK
}else{
//Token errato
}
Perchè il token ti protegge dagli attacchi bruteforce?
Semplice, gli attacchi di questo tipo utlizzano script, che ciclicamente mandano degli input POST, ma se uno di questa cambia sempre, lo script bruteforce, non se ne accorgerà, perchè non simula l'attacco come una persona normale (Ovvero aprire il browser, andare sulla pagina, e premere il tasto submit). Tutta via esistono dei bot molto più intelligenti che riescono a simulare un vero e proprio browser, e proprio per questo, unico metodo per proteggersi anche da questi, è inserire un captcha.
Il token come già detto, è la soluzione ottimale, non tanto ai login, ma ai pannelli utenti, poichè ti protegge dalle CSRF (Vedi guida linkata ).