0 Пользователей и 1 Гость просматривают эту тему.
  • 33 Ответов
  • 676 Просмотров
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Приветствую всех! Пишу вам камрады так как я в небольшом тупике. Вопрос собственно лаконичен и все с ним сталкивались - это СПАМ.
Немного технических данный:

СMS: Joomla! 3.9.16
Конструктор форм: Chronoform 6

Как бы и горе не знал, но вот пришла беда, и устремился спам на почту админа. В хронаформу прописал дополнительную валидацию:
Поля имя - только рус. буквы, все остальное под запретом.
Поле номер тел - цифры и символы ()-, все остальное под запретом.
Поле сайта - только рус., ингл яз., цифры, символы /:, все остальное под запретом.
Поле сообщение или вопрос - только рус.язык, все остальное под запретом.
Поставил Google reCaptcha v2 (v3 Chronoform 6 не поддерживает без доп. плагина, пока его не ставил).
Проверил заполнение форм, все ОК, все работает. НО!

Как показало время, СПАМ идет игнорируя валидацию палей. В некоторых формах на сайте стоит поле с выбором из списка и даже там бот умудряется прописать свой текст.
Первая мысль - ВЗЛОМАЛИ! Поменял все пароли, обновил движок - затишье продлилось пол дня и опять спам все тот же и все также игнорирует валидацию. Понимаю что он действует через код сайта, но не могу понять как. Может кто сталкивался или есть какие советы куда копать?
Буду рад любой помощи. Вопрос просто загнал в тупик.

Пока жду от вас советы и идеи, сам не сижу капаю данный вопрос! *ОХ-Х-Х*
*

dm-krv

  • Давно я тут
  • 999
  • 23 / 0
Валидацию надо на сервере делать, а не посредством javascript. Напишите свою форму обратной связи, создайте в нем замаскированные поля и если при отправке формы, есть данные в этих скрытых поля, смело отметайте запрос.
*

draff

  • Живу я здесь
  • 4851
  • 336 / 7
  • Ищу работу
Так спам через формы Chronoform или через форму обратной связи Joomla, в которой подключена рекапча Google ?
В форме обратной связи Joomla , в компоненте Контакты, отключена отсылка копии ?
Мне пишут спам через форму обратной связи Joomla, но раз в 1-2 дня, и смысла в этом спаме не пойму . А раньше, до отключения отсылка копии, спам до 10 писем в день был.
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Валидацию надо на сервере делать, а не посредством javascript. Напишите свою форму обратной связи, создайте в нем замаскированные поля и если при отправке формы, есть данные в этих скрытых поля, смело отметайте запрос.
Я бы с радостью это сделал бы... но у меня не один сайт и все формы имею различные характеристики и требования. Написать все их... очень геморно и конструктор меня всем устраивает. Тем более ранее такой проблемы не замечалось. Ваш подход боле правильный и надежный, но в моем случаи очень трудозатратный.
И как я писал выше, очень хочется понять каким образом эти боты проходят мимо всех преград.
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Так спам через формы Chronoform или через форму обратной связи Joomla, в которой подключена рекапча Google ?
В форме обратной связи Joomla , в компоненте Контакты, отключена отсылка копии ?
Мне пишут спам через форму обратной связи Joomla, но раз в 1-2 дня, и смысла в этом спаме не пойму . А раньше, до отключения отсылка копии, спам до 10 писем в день был.
Все же через Chronoform, так как шаблоны писем которые приходят на почту написаны через Chronoform и ссылка в письме выдается на отправку именно Chronoform.
Я тут немного покопался, не знаю может прав или нет, но все же хочу навести порядок.
1. После обновления Chronoform на более новую версию, изменился интерфейс и как я уже заметил логика обработки форм. Разработчик оставил возможность поддержки более поздних форм, которые были построены на старом интерфейсе. Вообщем пока все неоднозначно, ковыряю.
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Валидацию надо на сервере делать, а не посредством javascript. Напишите свою форму обратной связи, создайте в нем замаскированные поля и если при отправке формы, есть данные в этих скрытых поля, смело отметайте запрос.
Еще добавлю. Недавно тоже наткнулся на один прием. Создаем кнопку, которую видит только бот и по нажатию отправка блокируется. Мне эта фишка очень понравилась, но пока не придумал как ее в Chronoform-е реализовать.
*

draff

  • Живу я здесь
  • 4851
  • 336 / 7
  • Ищу работу
Разработчик оставил возможность поддержки более поздних форм, которые были построены на старом интерфейсе. Вообщем пока все неоднозначно, ковыряю.
А в шаблоне сайта макеты форм не переопределены ? В какой форме спам, можно скрин письма ?
Мне когда надоела спам, я добавил код на проверку по эмэйл в стандартный плагин recapctcha Joomla . В Jcomments делал проверку на наличие в тексте комментария http https
Конечно при обновлении приходилось по новой добавлять код .
п.с. Нашел тему свою
Спам через форму обратной связи
« Последнее редактирование: 24.03.2020, 17:40:53 от draff »
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
А в шаблоне сайта макеты форм не переопределены ? В какой форме спам, можно скрин письма ?
Мне когда надоела спам, я добавил код на проверку по эмэйл в стандартный плагин recapctcha Joomla . В Jcomments делал проверку на наличие в тексте комментария http https
Конечно при обновлении приходилось по новой добавлять код .
п.с. Нашел тему свою
Спам через форму обратной связи
Нет, не переопределены (если я понял правильно вопрос  *POPCORN*).
Скрин... да не вопрос. Вот - http://joxi.ru/p27BxWFKg5R5m7
Перед тем как создать тему я находил данные посты. Но честно, ни че не понял, кроме того что там ручками надо прописывать адреса почты. Но в моем случаи адреса каждый раз разные. Я пытался найти закономерности, но их нет. Чистый рандом.
*

ProtectYourSite

  • Живу я здесь
  • 2064
  • 110 / 4
  • Безопасность вебсайтов
Это платный компонент ? Если логика не работает на бэке, то  можно спросить техподдержку.
Если самому пытаться отсеять спам, то из бесплатного рекапча 3. Либо использовать платные сервисы, к примеру, как на этом форуме.
*

draff

  • Живу я здесь
  • 4851
  • 336 / 7
  • Ищу работу
Перед тем как создать тему я находил данные посты. Но честно, ни че не понял, кроме того что там ручками надо прописывать адреса почты. Но в моем случаи адреса каждый раз разные. Я пытался найти закономерности, но их нет. Чистый рандом.
В Jcomments делал проверку на наличие в тексте комментария http https
Код
*

stepan39

  • Захожу иногда
  • 438
  • 26 / 0
Подобная ситуация с RSForm Pro. Валидация побоку, как собственно и капча Google. Загадка в другом, что на сайте полно этих форм, но долбят только одну - форму обратной связи. Пример под катом.
Спойлер
[свернуть]
Названия полей менял - пофиг.  Блокировал IP целыми диапазонами (спам идет исключительно с похожих IP):
Спойлер
[свернуть]
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Добрый день камрады!

Не хочу кидать данную ветку по этой проблемке. Перечитал кучу форумов как забугорных так и наших скудных русских (в этом случаи все плохо). С помощью подсказок ребят выше в этой ветке (dm-krv, ProtectYourSite, draff - реально спасибо вам), вы заставили меня задумать в правильных направлениях. Что на сегодня у меня вышло:
1. Я пересобрал форму - вылезла какая то проблема с отправкой 2 писем, пока не разобрался.
2. Настроил валидацию на стороне пользователя через обработку JavaScript (для людей).
3. Настроил проверку валидации на стороне сервера с прерыванием последующей обработки формы и ее отправки (для ботов - ЕЩЕ ТЕСТИРУЮ, есть подозрение, что данная проверка коснется только валидации по заполнению полей (заполнено или нет). А мне надо не только проверка на заполнение, но еще и как именно они заполнены - ведь именно тут и происходи понимание того почему бот проходит валидацию, которая стоит для пользователей, типа: только русские буквы и все.). Хочу провести симуляцию от бота, отключить JavaScript в браузере и отправить форму с нарушением пользовательской валидации.
4. Подключил проверку Google reCaptcha v2 на стороне пользователя (как по мне бессмысленная вещь, так как проверка на стороне сервера рубит отправку (еще разбираюсь, сложности в осознании логики интерфейса хроноворма 6.1.х, думаю тут и кроется вопрос с 2 отправкой писем).
5. Добавил проверку невидимого поля для ботов, поставил в самый вверх и на стороне сервера поставил прерывание обработки если поле заполнено (думаю это самое действенное решение, хоть его и можно обойти, но будем реалистами не все боты ко мне щемятся).

Фиксирую время 13:00 по МСК, начал тест.
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Подобная ситуация с RSForm Pro. Валидация побоку, как собственно и капча Google. Загадка в другом, что на сайте полно этих форм, но долбят только одну - форму обратной связи. Пример под катом.
Спойлер
[свернуть]
Названия полей менял - пофиг.  Блокировал IP целыми диапазонами (спам идет исключительно с похожих IP):
Спойлер
[свернуть]

Ну я как бы по хроноформу тут вопрос веду, но думаю тут все также одинаково. После отправки формы, формируется техническая ссылка, обновляя которую (в браузере) происходит повторная отправка без проверки капчи и валидации. Вот и ответ. Я нашел на просторах интернета (на забугорных сайтах) инфу, что есть боты которые парсят данные ссылки по сайтам и там где ответ 200 бот их собирает в базу и начинает затем долбить с подменой IP, временными тайменгами и тд (короче все методы для обхода защиты от бота). Таких сволачей надо отлавливать только на стороне сервера и создавать им кучу подводных камней в виде скрытых полей и даже подмены кнопки для отправки (тоесть 2 кнопки с разыми событиями: одна для бота, которая не видна пользователю и она стоит выше основной (тоесть первая) и вторая для пользователя. Я б с огромной радостью применил данный вариант к своему вопросу, вот только его реализация... мне пока неподвластна.
*

stepan39

  • Захожу иногда
  • 438
  • 26 / 0
но думаю тут все также одинаково
100%
*

sivers

  • Завсегдатай
  • 1357
  • 179 / 0
Мне помогает подмена ссылки приемщика формы. В action формы вставлена ссылка, которая ничего не отправляет, но возвращает хороший ответ. А сама же отправка выполняется аякс-запросом на другую ссылку. Можно еще лишний параметр добавить, которого нет в форме и значение которого сервер сможет проверить. Например, метку времени (а сервер проверит, чтоб она лежала в допустимых пределах). Единственный нюанс - серверную часть (обработчик формы) надо делать кастомный, чтоб учесть все эти "хитрости".
Как итог - спама нет. И капчи нет.
На связи в телеге @sivers
*

draff

  • Живу я здесь
  • 4851
  • 336 / 7
  • Ищу работу
но думаю тут все также одинаково. После отправки формы, формируется техническая ссылка, обновляя которую (в браузере) происходит повторная отправка без проверки капчи и валидации. Вот и ответ. Я нашел на просторах интернета (на забугорных сайтах) инфу, что есть боты которые парсят данные ссылки по сайтам и там где ответ 200 бот их собирает в базу и начинает затем долбить с подменой IP, временными тайменгами и тд (короче все методы для обхода защиты от бота).
Значит в расширении нет проверки
Код
JSession::checkToken('get') or die( 'Invalid Token');
*

draff

  • Живу я здесь
  • 4851
  • 336 / 7
  • Ищу работу
Сделал хак в модуле- делаем проверку на наличие http or https , проверяйте, пользуйтесь .
 
Код
	$event = G2\L\Request::data('event', '');
// Start OlegK
$message = G2\L\Request::data('message', '');
if (!empty($message)) {
if (preg_match("/(http|https)/i", $message)) {
$app = JFactory::getApplication();
$app->redirect(JURI::Current(), 'No Spam', 'error');
}
}
// END
if(!empty($event)){
п.с.
Это файл модуля, в котором  я добавил проверку на сервере, на наличие http или https в поле message. Если есть стоп слова, код редиректит на текущую страницу и выдает сообщение  'No Spam' и ошибку типа Error которая должна выводится в шаблоне в
Код
<jdoc:include type="message" />
Аналогично можно сделать по любому полю и добавить стоп слова.
« Последнее редактирование: 26.03.2020, 15:31:42 от draff »
*

dm-krv

  • Давно я тут
  • 999
  • 23 / 0
Мне помогает подмена ссылки приемщика формы. В action формы вставлена ссылка, которая ничего не отправляет, но возвращает хороший ответ. А сама же отправка выполняется аякс-запросом на другую ссылку. Можно еще лишний параметр добавить, которого нет в форме и значение которого сервер сможет проверить. Например, метку времени (а сервер проверит, чтоб она лежала в допустимых пределах). Единственный нюанс - серверную часть (обработчик формы) надо делать кастомный, чтоб учесть все эти "хитрости".
Как итог - спама нет. И капчи нет.

Забавно, я делаю так же) В акшен у меня деза, а реальный запрос идет на другую страницу, при этом адрес страницы зашифрован частями совсем не очевидным способом и генерируется на лету, когда пользователь выполняет какие-то действия, например, нажимает инпуты, скролит страницу и т. д. Ведь вполне очевидно, что если форма заполнена без единого клика на странице и без скрола, это явная лажа.
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Так... ночка прошла и полный крах. Бот попался с изюмом. Расставленные ловушки обошел, да еще как издевательски начал картинки постить. :dry:
Значит делаем вывод, доп.инпут как ловушка для бота оказалась не эффективна. Скорее всего он ее распознает... к примеру по наличию определенного CSS - hidden
<div class="field hidden ">
    <label>testbot</label>
    <input name="testbot" type="text">
</div>
Так как это самое простейшее, ну не может же он заранее видеть обработчик. Видит только код, значит сейчас найду этот CSS и сменю его, а так же перекину это поле в середину формы и замаскирую ее под... к примеру отчество или тему вопроса.
Может это прозвучит самонадеянно, но я верю что для победы надо искать более простой и легкий способ. Была бы известна логика бота... то и подножку ему можно было поставить очень легко.
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Мне помогает подмена ссылки приемщика формы. В action формы вставлена ссылка, которая ничего не отправляет, но возвращает хороший ответ. А сама же отправка выполняется аякс-запросом на другую ссылку. Можно еще лишний параметр добавить, которого нет в форме и значение которого сервер сможет проверить. Например, метку времени (а сервер проверит, чтоб она лежала в допустимых пределах). Единственный нюанс - серверную часть (обработчик формы) надо делать кастомный, чтоб учесть все эти "хитрости".
Как итог - спама нет. И капчи нет.
Тоже классная идея, но и главная простая. Только мне до конца еще не понятен сам процесс, точнее затрудняюсь выполнить эти действия. Переживаю что как сильно это все же затронет плагин, так сильно хроноворм я еще не ковырял. А этот способ был применен случаем не на хронаворм? (ну так, а вдруг  ;D)
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Сделал хак в модуле- делаем проверку на наличие http or https , проверяйте, пользуйтесь .
 
Код
	$event = G2\L\Request::data('event', '');
// Start OlegK
$message = G2\L\Request::data('message', '');
if (!empty($message)) {
if (preg_match("/(http|https)/i", $message)) {
$app = JFactory::getApplication();
$app->redirect(JURI::Current(), 'No Spam', 'error');
}
}
// END
if(!empty($event)){
Не хочу показаться глупым, но скажу так, я умен немного в другой сфере - SEO, управление, а код... уровень не большой. Если есть такая возможность, объясните пожалуйста по подробнее, куда его вставить.
И поправьте если я ошибся, суть данной проверки для бота это его источник?
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Забавно, я делаю так же) В акшен у меня деза, а реальный запрос идет на другую страницу, при этом адрес страницы зашифрован частями совсем не очевидным способом и генерируется на лету, когда пользователь выполняет какие-то действия, например, нажимает инпуты, скролит страницу и т. д. Ведь вполне очевидно, что если форма заполнена без единого клика на странице и без скрола, это явная лажа.
Ну вот еще одно подтверждение эффективности по подмене action. Думаю сосредоточиться на этом. Но минус конечно в обновлении плагина.

Ух если получится, опишу тут все подробно. И просьба ко всем, ребята давайте будем проще, пишите подробнее ибо ваши идеи хороши, вот только очень трудно изобретать велосипед, который вы уже сделали.
*

sivers

  • Завсегдатай
  • 1357
  • 179 / 0
Так как это самое простейшее, ну не может же он заранее видеть обработчик. Видит только код, значит сейчас найду этот CSS и сменю его, а так же перекину это поле в середину формы и замаскирую ее под... к примеру отчество или тему вопроса.
А адрес обработчика сменили? Он ведь теперь уже может постить сразу на обработчик, не анализируя форму.
На связи в телеге @sivers
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
А адрес обработчика сменили? Он ведь теперь уже может постить сразу на обработчик, не анализируя форму.
Еще нет, только приступаю к этому.
*

sivers

  • Завсегдатай
  • 1357
  • 179 / 0
Тоже классная идея, но и главная простая. Только мне до конца еще не понятен сам процесс, точнее затрудняюсь выполнить эти действия. Переживаю что как сильно это все же затронет плагин, так сильно хроноворм я еще не ковырял. А этот способ был применен случаем не на хронаворм? (ну так, а вдруг  ;D)
Не на хромоформе. На кастомных формах. Но можно и на хроноформе. Сделайте 2 почти одинаковые формы. Первую показывайте на сайте, но ее обработчик должен быть фиктивным. Добейтесь того, чтобы он ничего не делал (не отправлял и не сохранял в БД). Просто пусть сообщает в ответ, что все успешно отправлено. И все.
А вторую форму сделайте почти такой же, только добавьте 1-2 поля, но нигде ее не выводите на сайте. Просто чтоб ссылка обработчика была. Это будет та, на которую будет отправлять скрипт (аяксом или подменой в action). Дополнительные поля создавайте/добавляйте тоже JS-ом и проверяйте их наличие во втором обработчике (по идее просто сделать поля обязательными). Должно работать.

Есть и другие несложные решения, но они требуют внесения правок в обработчик (или целиком кастомный обработчик). Лучше всего комбинировать несколько решений.
« Последнее редактирование: 26.03.2020, 13:32:23 от sivers »
На связи в телеге @sivers
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Не на хромоформе. На кастомных формах. Но можно и на хроноформе. Сделайте 2 почти одинаковые формы. Первую показывайте на сайте, но ее обработчик должен быть фиктивным. Добейтесь того, чтобы он ничего не делал (не отправлял и не сохранял в БД). Просто пусть сообщает в ответ, что все успешно отправлено. И все.
А вторую форму сделайте почти такой же, только добавьте 1-2 поля, но нигде ее не выводите на сайте. Просто чтоб ссылка обработчика была. Это будет та, на которую будет отправлять скрипт (аяксом или подменой в action). Дополнительные поля создавайте/добавляйте тоже JS-ом и проверяйте их наличие во втором обработчике (по идее просто сделать поля обязательными). Должно работать.
Простая идея в миг превратилась в трудную  :(
Во первых вот так выглядит акшен:
<form action="https://адрес сайта/?chronoform=zakaz-consult&amp;event=submit" method="post" name="zakaz-consult" id="zakaz-consult" data-id="zakaz-consult" class="ui form G2-form" data-valloc="inline" enctype="multipart/form-data" data-dtask="send/self" data-result="replace/self" data-subanimation="1">
Пока не понятно как его и на что менять.

Во вторых... мне не хватает практики и знаний в создании поддельного ответа об отправке формы.

В третьих, я могу поставить скрытую форму над той формой которую долбит бот и сделать так что отправка проходить не будет.

Короче как то резко все усложнилось, но руки не опускаем, щас чет придумаю.
*

sivers

  • Завсегдатай
  • 1357
  • 179 / 0
1. Просто добавьте на страницу скрипт (после формы) такого содержания:
Код
<script>
document.getElementById('zakaz-consult').setAttribute('action', 'https://адрес сайта/?chronoform=zakaz-consult-double&amp;event=submit')
</script>

2. Тут надо только отключить оправку. Ответ у формы есть и без того. Т.е. настроить на "ничего не делать" с пришедшими данными.

3. Не надо публиковать даже в скрытом виде. Вторую форму (под именем zakaz-consult-double) просто создайте в админке или скопируйте первую и ничего больше с ней не делайте. Только не блокируйте в ней отправку.
На связи в телеге @sivers
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
<script>
document.getElementById('zakaz-consult').setAttribute('action', 'https://адрес сайта/?chronoform=zakaz-consult-double&amp;event=submit')
</script>
О! ЧЕРТ. Как элегантно, обязательно попробую этот варик. Отпишусь.
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
1. Просто добавьте на страницу скрипт (после формы) такого содержания:
Код
<script>
document.getElementById('zakaz-consult').setAttribute('action', 'https://адрес сайта/?chronoform=zakaz-consult-double&amp;event=submit')
</script>

2. Тут надо только отключить оправку. Ответ у формы есть и без того. Т.е. настроить на "ничего не делать" с пришедшими данными.

3. Не надо публиковать даже в скрытом виде. Вторую форму (под именем zakaz-consult-double) просто создайте в админке или скопируйте первую и ничего больше с ней не делайте. Только не блокируйте в ней отправку.
>:( Вариант не сработал. перенаправление срабатывает, это видно по ссылке после нажатия кнопки отправить. Но почта не приходит. И в консоле пишет кучу ошибок. Честно, даже не думал что этот вариант даст осечку, но FAQ есть факт - хроноформ от таких действий защищен.
*

markizmds

  • Захожу иногда
  • 62
  • 2 / 0
Сделал хак в модуле- делаем проверку на наличие http or https , проверяйте, пользуйтесь .
 
Код
	$event = G2\L\Request::data('event', '');
// Start OlegK
$message = G2\L\Request::data('message', '');
if (!empty($message)) {
if (preg_match("/(http|https)/i", $message)) {
$app = JFactory::getApplication();
$app->redirect(JURI::Current(), 'No Spam', 'error');
}
}
// END
if(!empty($event)){
Что то подобное находил на просторах рунета. Попробовал и добавил данный код на страницу, в итоге форма перестала работать напрочь.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как создавать категории напрямую в базе через таблицы (найти таблицу)?

Автор zxgame

Ответов: 4
Просмотров: 151
Последний ответ 21.07.2020, 12:14:21
от NewUsers
Как вывести через код дополнительное поле в категории?

Автор Vas80

Ответов: 18
Просмотров: 535
Последний ответ 03.07.2020, 18:07:27
от Vas80
Создание пункта меню через БД

Автор Den JW

Ответов: 5
Просмотров: 290
Последний ответ 18.03.2020, 22:28:30
от sivers
Встроить в форму PHP доставку Новой Почты

Автор aniangeless

Ответов: 2
Просмотров: 130
Последний ответ 25.02.2020, 15:25:35
от aniangeless
Код для вставки отделения Новой почты в форму Joomla 3?

Автор aniangeless

Ответов: 2
Просмотров: 195
Последний ответ 21.02.2020, 22:46:07
от aniangeless