Безопасный модуль «vote» для CMS 1С-Битрикс

С модулем «vote» (полное название «iblock.vote») владельцы сайтов на 1С-Битрикс сталкивались уже неоднократно и, к сожалению, — в негативном ключе, потому что этот модуль в топе «дырявых» модулей данной CMS. В начале 2022 года мы уже писали кейс с чекером про массовый взлом сайтов через этот модуль. Выпущенные обновления (22.0.400) конкретную уязвимость закрыли, но на этом всё не закончилось. Модуль так и не переработали, а это значит, что другие уязвимости в нем так и остались. По этой причине мы решили проблему радикально и написали свой модуль, без лишних технологических отверстий.
Хотите заменить модуль на своем сайте? Обращайтесь!
Напишите или позвоните — мы поможем. Уточним задачи и на их основе предложим варианты
Что за...?
Штатный модуль «vote» не самый часто используемый, но один из самых «дырявых» в 1С-Битрикс, более того, даже свежие обновления не закрывают все имеющиеся уязвимости. Но для чего он используется?
Например, в статьях. Помимо счетчика количества просмотров, иногда можно увидеть возможность поставить статье «лайк» — за данный счетчик как раз отвечает модуль «vote»:


Еще один из вариантов использования — в интернет-магазинах, где благодаря этому модулю клиенты могут лайкать позиции, собирая список избранного для будущих заказов, или проставлять позициям рейтинг:


Однако на большинстве сайтов этот модуль не используется, но при этом остается включенным. Результаты взлома модуля мы уже разбирали в прошлом кейсе , но если кратко: возможен как полный дефейс сайта, так и отдельные правки в базе данных (например, цены на некоторые товары). Приятного мало.
своем сайте? Обращайтесь!
Наше решение
Учитывая, что модуль «iblock.vote» всё же востребован, но является потенциально небезопасным, мы решили сделать свой аналог, используя архитектуру REST.
Мы отказались от component.php в пользу решения на REST, а в ajax.php добавили дополнительные проверки и защиту. Используется двойная проверка: одна на frontend и дополнительная на backend, на случай попытки спама. Решение поддерживает гибкие настройки под любой внешний вид форм на сайте и имеет одну важную особенность — запрос рейтинга элемента по ID. Это позволяет выводить рейтинг, даже если голосование на сайте не проводится, а сам рейтинг взят из какого-то стороннего источника.
Устанавливается решение путем добавления к имеющейся форме JS для отправки запроса и скриптов на PHP для получения результатов, в скриптах указывается, какое поле является полем рейтинга, код для google ReCaptcha, если таковая установлена и другие необходимые поля в виде номера инфоблока, символьных кодов свойств для записи результатов.
В чем плюсы такого решения?
- Модуль не содержит бесчисленного количества уязвимостей и имеет дополнительную защиту.
- Можно использовать на любом сайте на PHP, не только на 1С-Битрикс.
- Модуль поддерживает все стандартные поля «ibloke.vote».
- Есть возможность получать рейтинг элемента по запросу.
- Можно применять к любым элементам любого инфоблока.
- Факт голосования клиента хранится на frontend, а результаты голосования — в базе данных.
- Ошибки и данные об успешных отправках передаются через JSON, что делает решение удобным в использовании на фреймворках.
Итог
Любой проект требует внимания и регулярных обновлений безопасности, но не каждое обновление способно закрыть все уязвимости. Отдельные модули требуют индивидуального подхода и решений.
Если на вашем сайте на 1С-Битрикс используется модуль «ibloke.vote», но есть возможность отказаться от него, — отключите, это поможет снизить шанс взлома. Если же модуль нужен, а наше решение вас заинтересовало — обращайтесь, мы с радостью установим его на ваш сайт.
Все кейсы