У меня есть простой PHP скрипт почтовой программы, которая принимает значения из формы, представленной с помощью POST и почт их мне:Как очистить ввод пользователя в PHP перед отправкой?
<?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");
?>
Как я могу дезинфицировать вход?
Если вы используете прямое текстовое поле, в ваших данных $ _POST не должно быть никаких htmlentities. Если вы используете какой-то богатый текстовый редактор, который генерирует html, используйте html_entity_decode(). Обязательно удалите управляющие символы из объекта - символы новой строки в теме могут испортить ваши заголовки электронной почты. –
@Frank Farmer: вы предлагаете ему полагаться, что он не должен доверять, что ни один оскорбительный код не достигнет его кода, потому что он использовал «прямое текстовое поле"? Это ужасный совет. –
Хех, прямое текстовое поле. Просто сделал XSS-тест на тех, кто это сделал. Им не понравилась забавная картинка, отправленная через ссылку img, введенную в «прямое текстовое поле». –