Аудит сайтов на 1С-Битрикс
Открываешь проект от предыдущей команды — в init.php 3000 строк, обработчики OnBeforeIBlockElementUpdate вложены друг в друга, в корне лежит dump.sql на 4 гигабайта, а upload/ весит больше базы данных. И это типичная ситуация, не исключение. Аудит — способ понять масштаб бедствия до того, как начнёшь вкладывать деньги в доработки.
Когда аудит из «хорошо бы» превращается в «надо вчера»
- Смена подрядчика — нужно понять, что оставила предыдущая команда. Качество кода, архитектурные решения, мины замедленного действия
-
Позиции просели — за падением органики почти всегда стоят конкретные технические причины: дубли страниц, сломанный
canonical, 50К мусорных URL в индексе - Сайт тормозит под нагрузкой — и падает именно в разгар распродажи, когда каждая минута даунтайма стоит денег
-
Подозрение на взлом — спам-рассылки с сервера, редиректы на казино в мобильном трафике, непонятные файлы в
/bitrix/modules/ - Перед крупными доработками — вкладывать в развитие проекта, не зная его реальное состояние — всё равно что строить этаж, не проверив фундамент
Технический аудит: что реально проверяем
Большая часть проблем на Битриксе — в трёх местах: init.php, база данных и конфигурация сервера.
init.php и обработчики событий — главная помойка проекта. Здесь копятся обработчики OnAfterUserLogin, OnBeforeOrderAdd, OnAdminContextMenuShow, которые никто не рефакторит годами. Один проект — 47 обработчиков в init.php, из которых 12 уже ничего не делали (инфоблоки давно удалены), но продолжали дёргать CIBlockElement::GetList() на каждом хите.
Версии и совместимость:
- Версия ядра — если ниже 22.0, обновление обязательно (PHP 8.1 не поддерживается)
- Модули маркетплейса — часто конфликтуют между собой и с ядром после обновления
- Лицензия — без активной лицензии нет обновлений безопасности
Конфигурация сервера:
- PHP:
memory_limit< 256M — проблема на каталогах > 10K товаров. OPcacherevalidate_freq= 0 в продакшне — CPU плачет - MySQL:
innodb_buffer_pool_sizeдолжен быть 70-80% от RAM.query_cacheна MySQL 8.0+ — удалён, но в конфигах часто остаётся, генерируя ошибки в логах - nginx: отсутствие
expiresдля статики, нет gzip для JS/CSS, отсутствиеfastcgi_cache
База данных — тут обычно самое интересное:
- Таблица
b_event_log— разрастается до гигабайтов, если не настроена очистка -
b_search_content_text— полнотекстовый индекс, который может весить больше самого контента - «Мёртвые» таблицы от удалённых модулей —
b_forum_*,b_learning_*— занимают место и тормозят бэкапы - Slow query log — включаем, ждём сутки, анализируем. Один запрос к
b_iblock_element_propertyбез индекса может тормозить весь сайт
Файловая система:
-
/upload/resize_cache/— может весить 50-100 ГБ. Часто хранит ресайзы давно удалённых картинок - Бэкапы в корне —
backup_2019.tar.gzрядом сindex.php. Доступен по прямой ссылке. Были случаи - Файлы ядра, изменённые вручную — перезапишутся при обновлении, и кастомная логика молча пропадёт
SEO-аудит: дубли, каноникалы и мусор в индексе
-
Дубли — параметры фильтров и сортировок генерируют тысячи URL.
/catalog/?PAGEN_1=2,/catalog/?sort=price&order=asc— каждый в индексе как отдельная страница - canonical — модуль SEO Битрикс умеет ставить canonical, но по умолчанию не делает этого для параметризованных URL
-
robots.txt — стандартный от Битрикс закрывает
/bitrix/, но не закрывает/search/,/personal/,/ajax/— а там ещё тысячи мусорных страниц - sitemap.xml — генератор Битрикс иногда включает неактивные элементы и 404-страницы
- Schema.org — Product, BreadcrumbList, Organization. Без структурированных данных сниппеты в выдаче скучные
- Core Web Vitals — LCP > 2.5s на мобильных — норма для непрооптимизированного Битрикса. Обычно виноваты неоптимизированные изображения и блокирующий JS
Аудит безопасности: бэкдоры, веб-шеллы и забытые скрипты
Проверка на уязвимости:
- SQL-инъекции через
$_REQUESTв кастомных компонентах — предыдущие разработчики не всегда используют$DB->ForSql() - XSS — вывод пользовательского ввода без
htmlspecialcharsbx() - Загрузка файлов — кастомные формы, которые не проверяют MIME-тип и расширение. Загрузил
.phpкак «картинку» — получил веб-шелл
Типичные находки:
- Модуль «Проактивная защита» отключён — WAF не работает, журнал вторжений пуст
- Админка доступна без ограничений по IP —
/bitrix/admin/открыт всему интернету -
adminer.phpилиphpMyAdminв корне сайта — забыли удалить после миграции - Обфусцированный код в
.htaccess— редирект мобильного трафика черезRewriteCond %{HTTP_USER_AGENT} - Модифицированные файлы ядра —
include.phpв модулях с вставкамиeval(base64_decode(...))
Аудит производительности
Серверная сторона:
- Профилирование через Blackfire или Tideways — видим, какие функции жрут CPU. Часто это
CIBlockElement::GetList()в цикле — классический N+1 - Кэш:
hit rateOPcache, Memcached, управляемого кэша Битрикс. Если кэш композитного сайта инвалидируется при каждом заказе — он бесполезен - Агенты Битрикс — если
agents_use_crontabне включён, агенты выполняются на хитах пользователей. Тяжёлый агент = тормоз для случайного посетителя
Нагрузочное тестирование:
- Базовый RPS, деградация при 2x, 5x нагрузке
- Как ведёт себя сайт, когда лимит превышен — корректная деградация или 502 Bad Gateway?
Аудит кода
Оцениваем кастомные разработки предыдущих команд:
- Используют ли D7 ORM или лепят
$DB->Query()в обход всего - PSR-12, автозагрузка, структура модулей — или всё в одном файле
-
N+1—GetList()внутриwhile($arItem = $rsItems->Fetch())— классика - Модифицированные файлы ядра —
bitrix/modules/sale/lib/с ручными правками. При обновлении всё сломается - «Временные» решения, которые живут третий год —
// TODO: переделатьот 2021-го
Формат отчёта
| Категория | Что внутри |
|---|---|
| Критическое | Безопасность, потеря данных, падения. Чинить сегодня |
| Важное | Производительность, SEO, стабильность |
| Рекомендации | Архитектурные улучшения, рефакторинг, оптимизации |
| План | Приоритизированный список задач с трудоёмкостью |
Каждая проблема: что нашли → где → как влияет → как исправить → трудоёмкость.
Как проводим
- Доступы — панель Битрикс, SSH, база, Яндекс.Вебмастер, Search Console
- Автоматика — «Монитор качества» Битрикс, Screaming Frog, GTmetrix, сканеры безопасности. Ловят 60% проблем
- Ручной анализ — остальные 40%. Архитектура, код, бизнес-логика, конфигурация — это только руками
- Отчёт — систематизация, приоритеты, рекомендации
- Обсуждение — встреча с заказчиком, ответы на вопросы, план устранения
Виды аудита и сроки
| Вид | Срок | Для кого |
|---|---|---|
| Экспресс (чек-лист) | 2-3 дня | Быстрая оценка, небольшие сайты |
| Технический | 3-5 дней | Выявление инфраструктурных проблем |
| SEO | 3-5 дней | Просели позиции, мусор в индексе |
| Безопасность | 5-7 дней | Сайты с платежами, персональными данными |
| Производительность | 3-5 дней | Тормозит, падает под нагрузкой |
| Комплексный | 2-3 недели | Полная картина перед серьёзными вложениями |
Результат — не стопка бумаг, а руководство к действию с конкретными задачами и приоритетами.







