Articoli

PHP: attenzione alla funzione mail()

di eugy

In PHP per inviare una mail, ad esempio da un form, si può usare la funzione mail(), che ha la sintassi

mail( $to, $subject, $message, $headers );

Questa però non fa nessun controllo sui campi, in particolare sui campi $to e $message. Se si tratta di un form, a cui quindi si possono passare dei parametri anche tramite URL, è indispensabile fare dei controlli, altrimenti il form può essere utilizzato per inviare messaggi di spam includendo destinatari a piacimento attraverso un campo Bcc: embeddato all’interno del corpo del messaggio. In un form quindi il campo To: va sempre preimpostato, e si deve fare un controllo sul corpo del messaggio per evitare che vi vengano inseriti header SMTP.

Un esempio di controllo che si può fare sul corpo è il seguente:

function has_no_emailheaders($text)
{
return preg_match("/(%0A|%0D|\\n+|\\r+)(content-type:|to:|cc:|bcc:)/i", $text) == 0;
}


if (has_no_emailheaders($body)) {
mail($to, $subject, $body, $header);
}

Lascia una risposta

Dovete essere loggati per inviare un commento.

Archivi e link