2011-01-29 8 views
10

Dato un modulo di contatto che accetta l'input dell'utente personalizzato (ad esempio indirizzo, riga dell'oggetto, messaggio), quali sono alcune implicazioni sulla sicurezza e "trucchi" su cui prestare attenzione?Posta di PHP(): quali sono i potenziali problemi a cui prestare attenzione?

Come minimo, l'indirizzo e-mail dell'utente dovrà essere convalidato (probabilmente usando filter_var() o equivalente). Da quello che ho letto, questo dovrebbe anche impedire l'inserimento di intestazioni aggiuntive nello script.

Per quanto riguarda la riga dell'oggetto e il contenuto del messaggio? Sono necessari servizi igienici per questi campi? Immagino che un client di posta elettronica impedisca l'esecuzione automatica di script come gli script, e non sono particolarmente preoccupato per cose come i tag HTML (se qualcuno vuole passare il tempo a stilare un email a mano, questa è la loro prerogativa - semplicemente non lo farò vedendolo: P). Se i servizi igienico-sanitari sono richiesti come, qual è il modo migliore per farlo senza essere troppo invadente (ovvero mantenendo la stessa natura dell'email)?

+0

possibile duplicato di [Perché non dovrei usare la funzione mail() di PHP?] (Http://stackoverflow.com/questions/4565066/why-shouldnt-i-use-phps-mail-function) –

+2

@Rafe non credo davvero. L'OP sta chiedendo specificamente dei servizi igienico-sanitari, che il dupe non si rivolge allo –

+0

. Quel thread ha comunque suscitato il mio interesse. Non ho mai trovato la necessità di utilizzare la funzione mail() prima e il tipo di sospetto che le cose potrebbero diventare disordinato molto rapidamente. : P – Illianthe

risposta

4

Assicurarsi che le persone non possano iniettare interruzioni di linea in qualsiasi parte eccetto il corpo. Inoltre rendere il destinatario statico e non passarlo mai, ad es. attraverso un campo di forma nascosta. Tuttavia, aggiungere un campo del genere non è una cattiva idea; ma bloccare l'IP se non è impostato sul valore atteso - quindi il tuo client è probabilmente un bot di spam.

+0

+1 ottimo consiglio – alex

+0

Sei sicuro che le interruzioni di riga non sono sicure nei campi a e oggetto? Eventuali riferimenti? – user1318499

+0

Le interruzioni di riga sono convertite in spazi al giorno d'oggi ma prima di 5.1.2 non era così. Ad ogni modo, se qualcuno inietta le intestazioni è probabilmente uno spammer. Si desidera rilevare questo in modo che non invii spam a chiunque sia il legittimo destinatario dell'e-mail. – ThiefMaster

7

Se si utilizza il quarto argomento, le intestazioni facoltative, guardare per l'inserimento di intestazioni in più, se si sta facendo qualcosa di simile ...

mail($to, $subject, $message, 'From: $email'); 

Se $email viene da input dell'utente e non è sterilizzate , un utente potrebbe inserire qualcosa come ...

\n\rCC:[email protected]

È possibile evitare questo filtrando \n e \r, o la convalida $email utilizzando la funzione filter_var($email, FILTER_VALIDATE_EMAIL).

+0

Ma poiché questi trucchi non sono banali da sapere, è molto più sicuro lasciare che una biblioteca si occupi di ciò che ha già pensato a queste cose. – DGM

Problemi correlati