PHP безопасные почтовые переменные - PullRequest
1 голос
/ 21 августа 2010

Сделал небольшую контактную форму на php, он получает $_POST переменных и писем мне.

<form action="/myscript.php" method="post">

Небольшой кусок кода:

$subject = trim($_POST['subject']);
$comment = trim($_POST['comment']);
mail($email, $subject, $comment, $headers);

$email - моепочтовый адрес, $headers обычно.

Фильтрация по теме и комментарию отсутствует. Может ли это быть потенциальной дырой в безопасности моего сайта?

Моя почта размещена на gmail.com. Может ли нефильтрованная почта с моего сайта навредить мне, когда я открою интерфейс gmail в браузере?

Как мне отфильтровать все переменные? Может быть, я хочу echo немногоиз них на моем сайте, после отправки по электронной почте.(например, «Спасибо,% name%!»)

Ответы [ 3 ]

1 голос
/ 21 августа 2010

Да, это опасно, уязвимо для атаки, называемой инъекцией почты.
Хотя это не может повредить ваш сайт, но может быть использовано спаммерами.

$subject = "Site feedback";
$comment = trim($_POST['subject'])."\n\n".trim($_POST['comment']);
mail($email, $subject, $comment);

этот будет в безопасности.

1 голос
/ 21 августа 2010

вероятно, вы можете проверить http://swiftmailer.org/ библиотеку компонентов php mailer, чтобы сравнить ваше решение с ней. Swiftmailer - это почтовое решение для фреймворков, таких как symfony-project.org.

Обычный текст не является проблемой для веб-сайта, вложения есть, но комментарий и тема не создадут никаких проблем на вашем сервере. Что касается gmail, то у него есть своя собственная проверка электронной почты, поэтому электронному письму с вирусом или чем-то подобному будет сложно пройти его анализ. Rgds.

1 голос
/ 21 августа 2010

Нет, это не так опасно. Gmail не доверяет полученным вами сообщениям, иначе каждый спамер сможет скомпрометировать вас.

Тем не менее, это хорошая практика, по крайней мере, проверять, существуют ли переменные и не превышает ли их длина максимум.

РЕДАКТИРОВАТЬ Возможно, старые версии PHP были уязвимы для атак с использованием электронной почты, как описано здесь . Это не поставит под угрозу ваш сайт, и ваш почтовый клиент сможет безопасно обрабатывать вредоносные электронные письма, но потенциально может превратить вас в спам-ретранслятор.

В новых версиях этой уязвимости нет, поскольку все управляющие символы (те, что ниже 0x20) санированы . Вы можете сделать такую ​​же санитарию, как это:

$subject = filter_input(INPUT_POST, "subject", FILTER_UNSAFE_RAW,
    FILTER_FLAG_STRIP_LOW);
if ($subject === false) { /* subject not given/not scalar; handle it */ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...