¿Este formulario de contacto PHP es seguro? [cerrado]

2

¿Puede decirme si el siguiente formulario de contacto de PHP es seguro? (Se acostumbra con AJAX.)

<?php
$email_to = "[email protected]";

$email_subject = "My subject";

$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];

$error_message = "";

$email_message = "Form details below.\n\n";

function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return filter_var(str_replace($bad, "", $string), FILTER_SANITIZE_EMAIL);
}


$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "Email: ".clean_string($email)."\n";
$email_message .= "Message: ".clean_string($message)."\n";


// create email headers

$headers = "From: [email protected]\r\n".
           "Reply-To: [email protected]\r\n".
           "X-Mailer: PHP/" . phpversion();

@mail($email_to, $email_subject, $email_message, $headers);  

?>
    
pregunta Ram Rachum 05.01.2015 - 23:10
fuente

1 respuesta

0

Creo que es seguro, pero no estoy seguro de que sea lo que quieres.

Suponiendo que usted tiene control sobre las variables $email_to , $email_subject y $headers (como parece que hace en el código), definitivamente está apuntando a las variables que podrían hacerlo vulnerable a la inyección de scripts. $name , $email y $message .

Dicho esto, parece que el comando filter_var (que, confieso, no he usado antes) eliminará, en lugar de convertir, el texto que no corresponde a su filtro. Y como está aplicando el filtro FILTER_SANITIZE_EMAIL a cosas que no son, de hecho, correo electrónico (es decir, nombre y mensaje), puede perder el contenido que desee.

Creo que el comando htmlentities es mejor para lo que necesitas.

    
respondido por el Joe DeRose 06.01.2015 - 04:22
fuente

Lea otras preguntas en las etiquetas