ArtPing Обсудить проект

ZemBo Щит

Свой плагин защиты WordPress: сорок модулей, файрвол запросов, сканеры файлов и уязвимостей, вход по QR через своё приложение. Без подписок и чужого облака.

Замысел, разработка и поддержка

WordPress · свой плагин2026

Зачем свой

Готовые «щиты» для WordPress устроены одинаково: годовая подписка, тяжёлый сканер на каждой странице и облако, которому надо доверять свои журналы. Нам нужна была защита, которая не стоит подписки, не тормозит сайт и целиком остаётся на сервере клиента.

ZemBo Щит — сорок отдельных модулей, каждый включается галочкой. Ставим его на все сайты, которые ведём: и на свои, и на клиентские.

Что он делает

Закрывает лишние двери

  • отключает XML-RPC, пароли приложений и публичный список пользователей — три обычных входа для перебора;
  • прячет версию ядра, убирает подсказки о начинке сайта и запрещает выполнение PHP в папке загрузок;
  • ставит безопасные HTTP-заголовки, запрещает редактор файлов в админке и закрывает системные файлы;
  • ограничивает попытки входа и блокирует адрес, с которого их слишком много.

Смотрит за файлами и версиями

  • сканер вредоносного кода: сравнивает файлы с эталоном, показывает подозрительный фрагмент вместе с соседними строками и даёт увести файл в карантин;
  • слежение за файлами плагинов — любое изменение против эталона видно в журнале;
  • ежедневная сверка версий плагинов и тем с базой известных уязвимостей: если для установленной версии есть CVE, это видно до того, как ей воспользуются;
  • проверка заброшенных плагинов — тех, что закрыты или давно не обновлялись.

Разбирает запросы

  • файрвол запросов: разбирает GET, POST и cookie на признаки внедрения кода и запросов к базе; сначала можно включить режим «только записывать в журнал» и убедиться, что ловит атаки, а не посетителей;
  • обновляемые правила: если для чужого плагина вышла уязвимость, а обновления ещё нет, дыру закрывают правилом — без правки чужого кода;
  • ограничение частоты обращений к служебным адресам сайта, чтобы подбор паролей не шёл в обход обычной формы входа;
  • автоматическая блокировка тех, кто перебирает несуществующие адреса, — так работают сканеры уязвимостей.

Вход

  • двухфакторный вход по одноразовому коду;
  • вход по QR-коду через наше приложение для Android: телефон показывает шестизначный код, его вводят на сайте — так же сделан вход во ВКонтакте. Никаких СМС: код рождается в приложении и никуда не передаётся. Так подтверждение нельзя «подсунуть» человеку со стороннего сайта;
  • журнал действий администратора: активация плагинов, смена ролей, сброс паролей, правка настроек;
  • срок сессии администратора задаётся числом и может отсчитываться от последнего действия, а не от входа.

Проверяет базу

  • ищет администраторов, которых нет в списке пользователей, — так прячется взломщик;
  • замечает подмену адреса сайта и почты администратора, опасно открытую регистрацию, код в автозагружаемых настройках и в записях;
  • ничего не удаляет: только показывает и, если нужно, шлёт письмо или сообщение в мессенджер.

Что это дало

  • защита стоит на всех сайтах, которые мы ведём, без единой подписки;
  • журналы и карантин остаются на сервере сайта — ничего не уходит в чужое облако;
  • QR-код и ключи двухфакторного входа рисуются на самом сервере: раньше картинку рисовал сторонний сервис, и в него уезжали данные входа — это нашли и закрыли;
  • сканер уязвимостей нашёл на клиентских сайтах уязвимые версии покупных тем и плагинов, у которых обновление доступно только по лицензии; дыры закрыли правилами файрвола, не трогая чужой код.

Как мы его проверяем

Щит несколько раз проходил сплошной разбор кода — в том числе тремя разными системами ИИ параллельно, с очной сверкой их выводов. Ни одна не нашла способа войти без пароля, но нашлось другое, и всё это исправлено: одноразовый код можно было использовать второй раз в соседнем окне времени; подтверждение входа не было привязано к тому браузеру, который его запросил; «доверенное устройство» жило месяц и не отзывалось при смене пароля.

Мы считаем такой разбор обязательным. Плагин, который защищает вход, обязан сам выдерживать проверку — и мы можем её провести, потому что это наш код.

Как это выглядит

Сорок модулей защиты, каждый включается галочкой: от закрытия XML-RPC до файрвола запросов
Сорок модулей защиты, каждый включается галочкой: от закрытия XML-RPC до файрвола запросов
Статистика: сколько событий было по дням и какого они рода
Статистика: сколько событий было по дням и какого они рода
Сканер вредоносного кода: подозрительный фрагмент показан с соседними строками, файл можно увести в карантин
Сканер вредоносного кода: подозрительный фрагмент показан с соседними строками, файл можно увести в карантин
Сверка версий плагинов и тем с базой известных уязвимостей — ежедневно
Сверка версий плагинов и тем с базой известных уязвимостей — ежедневно

Все работы

Расскажите о задаче

Нужно создать сайт, доработать существующий или решить техническую проблему? Опишите в двух словах — ответим на указанную почту.

    Потяните вправо
    Подтверждено
    защита от роботов