Abbiamo visto quindi nella precedente punta l’importanza di dover proteggere un form email in php poichè modificando gli header semplicemente sarà possibile creare inconsapevolmente Spam. L’arma per difendersi dall’Email Injection è quella delle espressioni regolari. Inserendo la seguente riga nello script form.php faremo in modo di bloccare tutte le email non valide che possono generare spam.
[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-\.]?[a-z0-9])+\.[a-z]{2,4}Tramite questa espressione regolare cerchiamo di bloccare in particolare l’aggiunta di header che si possono aggiungere con %0A, ma anche email del tipo b@a.i oppure kk@.com ecc…Occorre quindi inserire un controllo nel file form.php in modo da effettuare un confronto tra tutte le combinazioni della regular expression e la stringa da controllare (es. l’email in questo caso.) Il controllo viene eseguito tramite la funzione eregi(regular expression, email)Quindi utilizzando un tipico schema if … else possiamo fare in modo che se l’email è validata la funzione mail ( ) verrà attivata altrimenti verrà restituito il messaggio “errore inserimento mail”.Questo lo script completo di un form in php protetto da Email Injection:<?php
$nome=$_POST[“nome”];
$email=$_POST[“email”];
$destinatario=”info@internet-news.it”;
$mittente=”From: $email”;
$oggetto=”Nuova iscrizione alla Newsletter di Internet News”;
$messaggio=”$nome si Х iscritto alla newsletter e ha comunicato questa e-mail $email”;
if (eregi(‘^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-\.]?[a-z0-9])+\.[a-z]{2,4}$’,$email)) {
mail($destinatario,$oggetto,$messaggio,$mittente);
echo “Grazie per esserti iscritto alla newsletter di Internet-News”;
} else {
echo “Errore inserimento email”; ?>
Nessun Commento