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

Константин Ильин
13 января 2024, 12:00
0
Тоже столкнулся с такой проблемой, не понимал откуда спам. Стоял AjaxForm, поменял на FetchIt один фиг через день началось.
Как вариант конечно создать дубликат action.php, назвать аля fsdfjsfjsoidfjsofsdofsd.php, заменить везде обращения action.php на новый файл. в оригинальном action.php return можно какую то ошибку все время возвращать для правдоподобности.

Но если прям всерьез взялись за атаку, то и этот файл быстро найдут, посмотрят куда отправляются запросы.
Артур Шевченко
13 января 2024, 11:11
0
А как это поможет в случае, когда нужно внести изменения в вёрстку? Два шаблона делать? Или вёрстку в контент запихивать?
Сергей Карпович
13 января 2024, 09:53
0
1. нужно манагевам и админам отметить права видеть неопубликованные ресурсы.
2. в сниппетах вывода ресурсов, включить отображение неопубликованных.

Это должно сработать, но я не проверял
Дмитрий
12 января 2024, 23:07
0
Тоже бывает такая ошибка, интересно было бы знать на что ругается…
Артур Шевченко
12 января 2024, 21:22
0
Контекст для dev версии это что-то от лукавого, даже в теории не могу представить как это может работать. Единственный приемлемый вариант это хранение элементов в файлах и разворачивание отдельного dev сайта. В IDE создать два подключения: на prod и на dev. И деплоить сначала на dev, а после проверки на prod.
Андрей
12 января 2024, 13:29
0
чтобы он выводил информацию на карте и адреса пунктов выдачи товаров на других языках? Например, на казахском
У списка офисов/регионов/населённых пунктов при запросе к апи можно передать параметр lang, доработать это несложно.

Есть одно но, доступно только 3 языка:
Локализация. По умолчанию «rus» (доступны eng и zho) // zho это Китайский.
Futuris
12 января 2024, 10:51
0
Может у него «трешка» стоит. Пишет же «modx revo последний».
Артур Шевченко
11 января 2024, 21:00
0
Никак. Нет в настройках такой опции
Максим
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 (не знаю, что там), далее отправляется письмо, далее проверка рекапчи… только смысл то её проверять, письмо уже отправлено.