Создать акаунт
Всё для вебмастера » Вопросы и ответы » CMS » WordPress » Почему спам-бот обходит серверную валидацию данных формы?

Почему спам-бот обходит серверную валидацию данных формы?

22 янв 2023, 14:12
WordPress
124
0
Привет! Через форму обратной связи шлется спам. Причем каким-то образом он обходит проверку данных формы на стороне сервера в php. вручную имитировал такие же запросы - проверку не проходит, все ок. а вот спам-боты как-то проходят.

Вот пример спам письма: заметьте бот умудряется отправлять пустые названия полей!
b6ac09a02d.jpg

Вот пример тестового письма:
572f41dca1.jpg

Обработчик формы:

<?phprequire_once(dirname(__FILE__).'/class.phpmailer.php');$method = $_SERVER['REQUEST_METHOD'];$message = '';$email = new PHPMailer();$c = true;//$secret = htmlspecialchars(trim($_POST["secret_field"]));//$honeypot = htmlspecialchars(trim($_POST["firstname"]));if($_FILES['upfile']['name'] != ""){for($i=0; $i < count($_FILES['upfile']['name']); $i++){$name_of_uploaded_file = basename($_FILES['upfile']['name'][$i]);$file_to_attach = $_FILES["upfile"]["tmp_name"][$i];$email->AddAttachment($file_to_attach, $name_of_uploaded_file);    }}$project_name = trim($_POST["project_name"]);$admin_email  = trim($_POST["admin_email"]);$form_subject = trim($_POST["form_subject"]);# spam filter: устанавливаем переменную$no_spam = true;#foreach ( $_POST as $key => $value ) {$key = empty($key) ? 'x' : $key;# spam filter: проверяем поле ввода на спам по признакам в массиве. обновляем переменную если есть спам.if($key == 'Комментарий' or $key == 'x' ){$no_spam = ($value == str_replace(array( 'WhatsApp', 'whatsapp', 'http://', 'https://', 'www.', '.ru', '.com', '[url', '<a ', ' seo ' ),'',$value));}#if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" && $key != "consent" ) {$message .= "" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td><td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td></tr>";}}$message = "<table style='width: 100%;'>$message</table>";function adopt($text) {return '=?UTF-8?B?'.base64_encode($text).'?=';}$headers = "MIME-Version: 1.0" . PHP_EOL ."Content-Type: text/html; charset=utf-8" . PHP_EOL .'From: '.adopt($project_name).' <info@'.$_SERVER['HTTP_HOST'].'>' . PHP_EOL .'Reply-To: '.$admin_email.'' . PHP_EOL;$email->CharSet   = "utf-8";$email->From      = 'info@domain.ru';$email->FromName  = $project_name;$email->Subject   = $form_subject;$email->isHTML(true);$email->Body      = $message;$email->AddAddress( $admin_email );$email->AddAddress( 'alexdio85@domain.ru' );# spam filter: отсылаем заявку на почту если спама нетif($no_spam) $email->Send();#


Помогите понять как такое возможно. И какие варианты решений есть? На вскидку есть несколько мыслей, но время не хочется терять. wordpress. Обычный хостинг regru. есть такая же проблема и похожий спам-бот на timeweb и Битриксе. Спасибо!

Внимание! Почему спам-бот обходит серверную валидацию данных формы? предоставлен пользователями сайта исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

Смотрите также:

Комментарии к Почему спам-бот обходит серверную валидацию данных формы?
Добавить Комментарий
В комментариях запрещаются спам, а также реклама любых товаров и услуг, иных ресурсов.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.