Здравствуйте! Мне просто интересно, насколько безопасен этот скрипт contactform, который я только что создал? Мой учитель давно ерзал у меня, когда я сделал свои контакты.
if($_SERVER['REQUEST_METHOD'] === 'POST'){ $myemail = "email@adress.com"; $name = $_POST['name']; $email = $_POST['email']; $phone = $_POST['phone']; $subject = $_POST['subject']; $comments = $_POST['comments']; if($name == 0 || !preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email) || !preg_match("/^\d{2}(-\d{3}){2}(\d{2})?$/", $phone) || $subject == 0 || $comments == 0){ $error_message = 'Something was written wrong..'; } else { $message = "Hello! Your contact form has been submitted by: Name: $name E-mail: $email Phone: $phone Comments: $comments End of message"; mail($myemail, $subject, $message); $error_message = 'Your message was sent!'; } }
Любые предложения по обеспечению безопасности?
PS Обеспечение контактной формы и защита формы контакта php – это и для WordPress, и для этого не для меня.
Вы можете использовать функцию для проверки таких записей, как:
function check_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; }
А также
$name = check_input($_POST['name']); $email = check_input($_POST['email']); $phone = check_input($_POST['phone']); $subject = check_input($_POST['subject']); $comments = check_input($_POST['comments']);
А также
if ($name && $email && $phone && $subject && $comments) { Send contact form... }
и, конечно, вы можете добавить captcha, чтобы сделать его более безопасным.
В вашем коде нет ничего небезопасного, кроме проверки достоверности данных. Вы просто собираете данные формы и отправляете их. поэтому единственная «небезопасность» заключается в том, что вы можете легко спамить эту форму, если не используется какой-либо код. На данный момент я не уверен, но может быть возможно обмануть mail (), чтобы добавить больше получателей с созданной переменной $ subject, так что это будет экономить, чтобы обеспечить ее oneliner и удалить любые CRLF