Ho un semplice script mailer PHP che prende i valori da un formulario presentato tramite POST e li poste a me:Come sanitizzare l'input dell'utente in PHP prima della spedizione?
<?php
$to = "[email protected]";
$name = $_POST['name'];
$message = $_POST['message'];
$email = $_POST['email'];
$body = "Person $name submitted a message: $message";
$subject = "A message has been submitted";
$headers = 'From: ' . $email;
mail($to, $subject, $body, $headers);
header("Location: http://example.com/thanks");
?>
Come posso sterilizzare l'input?
Se si utilizza un campo di testo diretto, non ci dovrebbero essere htmlentities nei dati $ _POST. Se utilizzi una sorta di editor di testo RTF che genera html, utilizza html_entity_decode(). Assicurati di togliere i caratteri di controllo dall'oggetto - i caratteri di nuova riga nell'oggetto possono rovinare le intestazioni delle tue email –
@Frank Farmer: stai suggerendo che dovrebbe fidarsi che nessun codice offensivo raggiunga il suo codice solo perché ha usato un "straight-up" campo di testo"? Questo è un consiglio terribile. –
Heh, campo di testo orizzontale. Ho appena fatto un test XSS su qualcuno che l'ha fatto. A loro non piaceva la divertente immagine inviata tramite un link img inserito nel "campo di testo straight-up". –