Всего 123 794 комментария

Максим
11 января 2024, 20:53
0
Я пока победил атаки только сменой AjaxForm на другую обертку Formit. Курл работать перестал, жду пока новых атак)
Артур Шевченко
11 января 2024, 20:51
0
Это потому что сниппет вызывается. А вообще идея в том, чтобы генерировать токен, записывать его в сессию и передавать на фронт. А при отправке формы передавать обратно на сервер и а файле action.php проверять равен ли переданный токен записанному в сессию и вообще есть ли этот токен. Генерировать можно в плагине на событие OnHandleRequest. Передавать на фронт через $_COOKIE. Вставлять форму JS.
Максим
11 января 2024, 19:55
0
Не помогло)
Артур Шевченко
11 января 2024, 19:34
0
Можно попробовать эту строку заменить на такую
$hash = $_SESSION['afhash'] = md5(http_build_query($scriptProperties));
А на этой строке добавить проверку
if(!$_SESSION['afhash'] || !$_REQUEST['af_action'] || $_REQUEST['af_action'] !== $_SESSION['afhash']){
 echo $AjaxForm->error('af_err_action_ns');
}
И не забудь рассказать помогло или нет, интересно же)))
Максим
11 января 2024, 19:23
0
А без смены нет решений? Это сам по себе AjaxForm дырявый?
Артур Шевченко
11 января 2024, 19:14
0
Поменяй AjaxForm на SendIt
Максим
11 января 2024, 19:08
0
Капчу поставил другую, на морде все отрабатывает отлично, без прохождения капчи форма не уходит, а через курл как шли письма — так и идут. Куда еще можно копать? Почему капча не работает на системном уровне? Где то может я какую то настройку упускаю?
Максим
11 января 2024, 14:47
0
Это все понятно, но поломанный ajaxform не мешает отправлять злоумышленнику отправлять курлом письма. Тут вопрос не в том, как пресекать действия с помощью рекапчи, а как запретить курлом отправлять письма напрямую через formit?
Наумов Алексей
11 января 2024, 14:13
0
ну смотри…
AjaxForm лишь прокидывает данные на FormIt.
Для того, чтобы это все работало — при рендере формы в сессию записываются $scriptPtoperties с которыми вызывался AjaxForm, эти данные записаны в сессии с ключем, который передается в af_action.

Получается, что в сессии эти данные есть по крайней мере она не пуста)

Потом FormIt вызывает хуки по очереди:
spam он там как-то email проверяет, у тебя в форме я каких-либо email не вижу, думаю что в итоге этот хук вообще ничего не делает у тебя;
— далее правильно вызывать recaptchav3, судя по логам он с ошибкой работает. Если посмотрим в код, то сообщение в логе «Failed to load Recaptcha class» означает и то, что хук вернет false. Все, FormIt должен прекратить обработку, до хука email, который отправит письмо, дело не дойдет.
Максим
11 января 2024, 13:24
0
Поменял местами, поставил хук капчи первым. С сайта форма отправляется (пишет все ок), на почту не приходят, в логах ошибка — httpdocs/core/cache/includes/elements/modsnippet/94.include.cache.php: 84) Failed to load Recaptcha class. Но скриптом через курл письма отлично приходят))) Капча не помогает защищаться от курла(
Наумов Алексей
11 января 2024, 13:18
0
хуки вызываются в порядке их указания:
&hooks=`spam,email,recaptchav3`
у вас значит проверка spam (не знаю, что там), далее отправляется письмо, далее проверка рекапчи… только смысл то её проверять, письмо уже отправлено.
Максим
11 января 2024, 13:17
0
Капча не появляется, так как скрипт не определяет, что визит подозрительный. Я если не вызываю сниппет на страницы, отправить курлом письмо все равно получается. Получается даже в том случае, когда на сайте не остается ни одной формы.
Максим
11 января 2024, 13:16
0
[[!AjaxForm?
&snippet=`FormIt`
&form=`tplCallbackForm`
&emailTpl=`tplCallbackMessage`
&hooks=`spam,email,recaptchav3`
&emailSubject=`Заказ обратного звонка с сайта [[++site_url]]`
&emailTo=`[[++ms2_email_manager]]`
&validate=`name:required,phone:required,email:blank`
&validationErrorMessage=`В форме содержатся ошибки!`
&successMessage=`Сообщение успешно отправлено!`
]]
Наумов Алексей
11 января 2024, 13:15
0
Ну вот тут было бы логично добавить проверку isset или array_key_exists. это скорее косяк компонента.

github.com/GulomovCreative/FetchIt/blob/master/core/components/fetchit/model/fetchit.class.php#L79
Наумов Алексей
11 января 2024, 13:11
0
Покажите вызовы сниппета AjaxForm на вашем сайте. Отправить форму с сайта без заполнения капчи точно невозможно?
Konstantin
10 января 2024, 21:59
0
БОЛЬШОЕ СПАСИБО!
Павел Романов
10 января 2024, 12:36
1
+1
В колонке назовите это поле как-нибудь иначе:


В рендере используйте реальное имя.
Если pdoTools установлен и поле называется «project», то так:
Андрей Вечканов
10 января 2024, 09:09
0
Добрый день! скажите есть ли возможность вывести или забрать рейтинг из tv поля, мне нужно импортировать данные через ImportX
Konstantin
09 января 2024, 14:29
0
Здравствуйте! Подскажите как задать параметр выходного формата изображения? Пытаюсь добавить &f=jpeg но не реагирует
Артур Шевченко
08 января 2024, 17:18
0
Наверное надо сортировку в вывод добавить.