Автор Тема: Спамят через обратную связь  (Прочитано 7564 раз)

22 Февраль 2018, 15:02:04
Ответ #30
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В preg_match добавьте знаки, которые хотите запретить
if (preg_match('/<[\s]*script/ims', $html) || preg_match('/('.$events.')[\s]*=/ims', $html) || preg_match('/.*script\:/ims', $html)) {
            return false;
}
А лучше не менять базовый метод isCleanHtml, а создать свой и переопределить классы ContactController.php и Validate.php.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
22 Февраль 2018, 19:31:54
Ответ #31
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А вот и причина всего этого безобразия. Вот какое письмо пришло с одного из моих сайтов.

Цитировать
Это письмо отправлено с сайта ... от: ...

Добрый день!
Предлагаем рассмотреть наше встречное предложение:
 
Отправка вашего сообщения в более чем 600 000 форм обратной связи Россия только до 25 февраля - 3000р
Ваше сообщение увидят более 600 000 администраторов сайтов и те кто имеет к ним доступ!
Вы прорекламируете Ваши товары и услуги!
 
Заявки и вопросы писать только сюда: 2018form @bk.ru(убрать пробелы)

Я, разумеется, по каждому случае связываюсь с провайдерами и закрываю почту и сайты паразитов, но,
похоже, от форм обратной связи придется отказываться...
Вот интересно, неужели те, кто заказывает такую услугу, не понимают, что их сайт попадет в черный список навсегда?
Хороша услуга своему бизнесу.
26 Февраль 2018, 07:50:56
Ответ #32
  • Новичок
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
prestashop 1.5

закоментил в ContactController.php строки отсылки письма:

if ($id_order)
{
$order = new Order((int)$id_order);
$var_list['{order_name}'] = $order->getUniqReference();
$var_list['{id_order}'] = $id_order;
}
/*
if (empty($contact->email))
Mail::Send($this->context->language->id, 'contact_form', $subject, $var_list, $from, null, null, null, $fileAttachment);
else
{
if (!Mail::Send($this->context->language->id, 'contact', Mail::l('Message from contact form').' [no_sync]',
$var_list, $contact->email, $contact->name, $from, ($customer->id ? $customer->firstname.' '.$customer->lastname : ''),
$fileAttachment) ||
!Mail::Send($this->context->language->id, 'contact_form', $subject, $var_list, $from, null, $contact->email, $contact->name, $fileAttachment))
$this->errors[] = Tools::displayError('An error occurred while sending the message.');
}*/
}

и один фиг письма идут! КАК???
шаблон письма contact-form.html
в htaccess сделал редирект на 404 с формы обратной связи
26 Февраль 2018, 10:14:29
Ответ #33
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
12 Март 2018, 12:17:05
Ответ #34
  • Пользователь
  • **
  • Сообщений: 86
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ситуация улучшилась, клиенты уже не страдают, но меня эти письма задолбали.
Пришлось изменить и файл classes/Validate.php
В
public static function isCleanHtml($html, $allow_iframe = false)добавил правило

        if (preg_match('/href/i', $html)) {
            return false;
        }
Доброго дня!
а в какой строке надо вставить правило  - у меня 1,7
И еще - что то много непонятных кодов -$events - это что?

12 Март 2018, 17:05:04
Ответ #35
  • Новичок
  • *
  • Сообщений: 9
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
а в какой строке надо вставить правило  - у меня 1,7
И еще - что то много непонятных кодов -$events - это что?

У меня 1.6.
event не то, работайте с фильтрами.
Или придумайте что-то еще, в теме уже есть несколько решений
30 Март 2018, 14:36:53
Ответ #36
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Каптча действительно не помогает.

Спасибо за ваше решение, хоть и топорный вариант, но рабочий. Если у Вас капча установлена старым модулем EICAPTCHA или вручную, она работает "условно". Там лишь проверка ответа от рекапчи, но нет полных правил для контроллера движка. В обновленной версии модуля EICAPTCHA прописаны новые правила в контроллере и поидее должна работать как надо (не проверял пока).

Похоже, какие-то п*ры набирают текст вручную.

Не, это боты спамят
30 Март 2018, 18:17:42
Ответ #37
  • Старожил
  • ****
  • Сообщений: 295
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Роботы обходят капчу, 100% блокировки спама такая защита не даст.

у меня такае же проблема, я поставил recaptcha v2.0
Сработает?
19 Ноябрь 2019, 00:25:18
Ответ #38
  • Новичок
  • *
  • Сообщений: 15
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
На соседней ветке нашел решение:

Мне помог модуль на гитхабе. Идея в том, что прежде чем отправить сообщение, нужно авторизоваться. Не надо закрывать форму, боты работают с контроллером, а он отправляет всех на регистрацию. Как-то так.
https://github.com/Seleda/ps__stopspamcontactform
Перед установкой прочтите в архиве файл readme
Версии престы 1.6 и 1.7
30 Сентябрь 2020, 17:58:11
Ответ #39
  • Новичок
  • *
  • Сообщений: 1
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Можно обойти проблему, не трогая код Prestashop, одним из способов ниже.
1. Если форма обратной связи (ОС) не особенно нужна, можно ее не отключать, а просто на хостинге поставить редирект /contact-us на главную страницу.
2. Если используете модуль Form Builder Pro, можно создать с его помощью форму ОС (с каптчей от Гугла v2)  и редиректить /contact-us на нее.