What are the best practices for handling email header injection vulnerabilities in PHP scripts like mail() functions?

Email header injection vulnerabilities in PHP scripts like mail() functions can be mitigated by validating and sanitizing user input before using it in email headers. This can prevent malicious users from injecting additional headers or altering the email content. It is important to always sanitize user input, especially when it is used in functions that generate email headers.

// Sanitize user input before using it in email headers
$to = filter_var($_POST['to'], FILTER_SANITIZE_EMAIL);
$subject = filter_var($_POST['subject'], FILTER_SANITIZE_STRING);
$message = filter_var($_POST['message'], FILTER_SANITIZE_STRING);

// Set additional headers to prevent injection
$headers = "From: myemail@example.com\r\n";
$headers .= "Reply-To: myemail@example.com\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

// Send the email
mail($to, $subject, $message, $headers);