PHP: evitare che un form venga inviato da remoto

PHP: evitare che un form venga inviato da remoto

Non esiste un metodo assolutamente sicuro per evitare che un form in PHP venga inviato da remoto. Esiste invece una pratica raccomandata che possiamo seguire.

Per prima cosa definiamo la nostra stringa di salt:


<?php
define('SALT', '#O2{Nsv4{~+I07/+/E+Obm}K)13K2Gh?U!0hCm}bVWrs4sR9NfazT+Sk%##');
?>

Quindi creiamo un token usando la stringa di salt e il timestamp corrente che andremo a memorizzare in una variabile di sessione:


<?php
$_SESSION['salt_time'] = time();
$token = md5(SALT . $_SESSION['salt_time']);
?>

<input type="hidden" name="nonce" value="<?php echo $token; ?>" />

Infine validiamo il token:


<?php
if(isset($_POST['nonce'])) {
	if($_POST['nonce'] == md5(SALT . $_SESSION['salt_time'])) {
		// Valido
	}
}
?>

Torna su