Questo modulo di contatto PHP è sicuro? [chiuso]

2

Puoi dirmi se il seguente modulo di contatto PHP è sicuro? (Si usa 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);  

?>
    
posta Ram Rachum 05.01.2015 - 23:10
fonte

1 risposta

0

Penso che sia sicuro - ma non sono sicuro che sia ciò che desideri.

Supponendo che tu abbia il controllo sulle variabili $email_to , $email_subject e $headers (come appare nel codice), stai sicuramente prendendo di mira le variabili che potrebbero renderti vulnerabile all'iniezione di script - $name , $email e $message .

Detto questo, sembra che il comando filter_var (che, confesso, non ho usato prima) spogli, piuttosto che convertire, il testo che non corrisponde al suo filtro. E poiché stai applicando il filtro FILTER_SANITIZE_EMAIL a cose che non sono, di fatto, e-mail (ad esempio, nome e messaggio), potresti perdere il contenuto che desideri.

Penso che il comando htmlentities sia più adatto a quello che ti serve.

    
risposta data 06.01.2015 - 04:22
fonte

Leggi altre domande sui tag