Как правильно настроить Cookies в 1С-Битрикс: пошаговое руководство
Заходили ли вы когда-нибудь в интернет-магазин, добавляли товар в корзину, случайно закрывали вкладку, а вернувшись, видели, что товар все еще ждет вас? Магия? Нет, это куки (Cookies).
Простыми словами, Cookies - это небольшие текстовые файлы, которые сайт отправляет в браузер пользователя. Они нужны современным проектам как воздух. Без кук невозможна нормальная авторизация, сохранение товаров в корзине, запоминание настроек языка и сбор корректной аналитики.
Однако настройка Cookies - это не только про удобство. Сегодня это вопрос информационной и юридической безопасности. Неправильная конфигурация кук в «1С-Битрикс» может привести к:
- Перехвату сессий и утечке персональных данных (привет, хакеры и XSS-атаки).
- Многомиллионным штрафам от Роскомнадзора или европейских регуляторов по GDPR за незаконный сбор данных.
- Постоянным багам: пользователей будет «выкидывать» из личного кабинета, а корзина начнет непредсказуемо очищаться.
2. Анатомия кук в 1С-Битрикс
Прежде чем лезть в настройки, давайте поймем, с чем мы имеем дело. «1С-Битрикс» - сложная система, и по умолчанию она создает целый набор служебных файлов.
- PHPSESSID - идентификатор сессии PHP. Главная кука, которая «держит» текущий сеанс связи пользователя с сервером.
- BITRIX_SM_LOGIN - хранит логин пользователя (если установлена галочка «Запомнить меня»).
- BITRIX_SM_UID - уникальный идентификатор пользователя (ID).
- BITRIX_SM_SOUND_LOGIN_PLAYED - служебная кука системы уведомлений, и многие другие.
Зачем нужен префикс BITRIX_SM_? Префикс - это отличительный знак. По умолчанию Битрикс присваивает его всем своим кукам. Это критически важно при многосайтовости (когда на одной лицензии работает несколько разных сайтов). Если не разделить префиксы, пользователи, авторизованные на одном сайте, могут магическим образом «разлогиниваться» при переходе на другой, потому что их куки будут перезаписывать друг друга.
3. Пошаговая настройка Cookies в Битриксе
Настроить куки можно в три этапа: через админку, на уровне ядра и с помощью кода D7.
Этап 1: Настройка через главный модуль (Main)
Идем в административную панель сайта: Настройки ➔ Настройки продукта ➔ Настройки модулей ➔ Главный модуль. Скроллим до секции «Авторизация» и «Настройки Cookie».
- Единый префикс для кук. Если у вас многосайтовость (например,
site.ruиpromo-site.ru), задайте каждому сайту свой префикс (например,SITE1_иSITE2_). - Распространение на весь домен. Если ваш сайт имеет поддомены (например,
spb.site.ruиmsk.site.ru), и вы хотите, чтобы пользователь авторизовался один раз для всех поддоменов — укажите в поле домена название с точкой в начале:.site.ru. - Безопасное хранение сессий. В высоконагруженных интернет-магазинах хранить сессии (связанные с куками) в файлах сервера - плохая идея. Это медленно. Перенесите хранение сессий в базу данных (включается галочкой в модулях) или используйте Redis/Memcached.
Этап 2: Настройка безопасности (флаги HttpOnly, Secure и SameSite)
Если ваш сайт не защищает куки, их могут украсть.
- Флаг Secure - гарантирует, что куки будут передаваться только по защищенному протоколу HTTPS.
- Флаг HttpOnly - запрещает доступ к кукам из JavaScript. Это блокирует 99% XSS-атак (кража сессии через вредоносный скрипт).
Начиная с последних версий Битрикса, настроить эти флаги можно централизованно в файле bitrix/.settings.php. Найдите (или добавьте) секцию cookies:
'cookies' => array(
'value' => array(
'secure' => true,
'http_only' => true,
),
'readonly' => false,
),
Также не забываем про атрибут SameSite. Он защищает от CSRF-атак (межсайтовой подделки запросов). Его можно настроить в php.ini (session.cookie_samesite = "Lax") или через конфигурацию веб-сервера (Nginx/Apache), добавляя параметр в заголовки. Рекомендуемый режим - Lax или Strict.
Этап 3: Управление куками через API Битрикса (для разработчиков)
Многие программисты по старинке используют стандартную функцию PHP: setcookie(). В Битриксе так делать НЕ НАДО! Стандартная функция не учитывает текущий контекст ядра, префиксы сайтов и настройки ИБ.
Как НАДО делать? Используем современное ядро D7: класс \Bitrix\Main\Web\Cookie.
Пример: Создание и отправка куки:
use Bitrix\Main\Application;
use Bitrix\Main\Web\Cookie;
// Создаем куку "MY_CUSTOM_CODE" со значением "123", сроком на 1 месяц
$cookie = new Cookie("MY_CUSTOM_CODE", "123", time() + 2592000);
$cookie->setDomain(".site.ru");
$cookie->setHttpOnly(true);
$cookie->setSecure(true);
// Отправляем в ответ браузеру
Application::getInstance()->getContext()->getResponse()->addCookie($cookie);
Пример: Чтение куки:
$request = Application::getInstance()->getContext()->getRequest();
$myValue = $request->getCookie("MY_CUSTOM_CODE");
// Битрикс сам подставит префикс, запрашивать нужно без него!
4. Юридическая сторона: Cookie-файлы и закон
Частый вопрос бизнеса: «А куки - это персональные данные?» Короткий ответ: Да. И Роскомнадзор (ФЗ-152), и европейский GDPR приравнивают любые идентификаторы, позволяющие отследить поведение конкретного пользователя, к персональным данным.
Что это значит для вас? Вы не имеете права собирать аналитические и рекламные куки без согласия пользователя.
Как реализовать Cookie Consent (баннер согласия):
- При первом заходе на сайт пользователь должен увидеть плашку: «Мы используем файлы Cookie...».
- Должны быть кнопки «Принять все» и «Настроить» (где можно отказаться от маркетинговых кук, оставив только строго необходимые).
- В Политике конфиденциальности на сайте должен быть раздел, описывающий, какие куки собираются, зачем и на какой срок.
Готовые решения: Чтобы не изобретать велосипед, зайдите в Маркетплейс 1С-Битрикс. Там есть десятки модулей по запросу «Соглашение cookie», например, от веб-студий Амазис, Аспро или Сотбит. Они легко настраиваются, красиво выглядят и закрывают юридические риски за пару кликов.
5. Распространенные проблемы и их решение (Траблшутинг)
Даже при правильной настройке возникают нюансы. Вот топ-3 проблем, с которыми мы сталкиваемся в агентстве:
🔴 Проблема 1: Пользователей постоянно «разлогинивает» (слетает авторизация).
- Решение: Проверьте настройки Главного модуля. Частая причина - малый срок «Времени жизни сессии». Также стоит проверить папку
/bitrix/tmp: если у сервера нет прав на запись в директорию временных файлов сессий PHP, авторизация будет сбрасываться. Либо переведите хранение сессий в БД.
🔴 Проблема 2: Куки не устанавливаются на поддоменах.
- Решение: Вы забыли точку! В настройках главного модуля (Настройки продукта → Сайты → Список сайтов) в поле «Доменное имя» укажите ваш домен без точки (например,
site.ru), а вот в настройках модуля для Cookie (о которых мы писали в этапе 1) - с точкой в начале:.site.ru.
🔴 Проблема 3: Конфликт кук при переезде на HTTPS.
- Решение: Если вы перевели сайт с HTTP на HTTPS, старые «незащищенные» куки пользователей могут конфликтовать с новыми. Настройте строгий 301-редирект на HTTPS, включите флаг
Secureв.settings.phpи очистите старые сессии (или посоветуйте пользователям почистить кэш браузера).
6. Чек-лист
Корректная работа с Cookies - это фундамент стабильности и безопасности вашего проекта на «1С-Битрикс». Проверьте свой сайт прямо сейчас по нашему чек-листу:
- Сайт работает по HTTPS, настроен 301-редирект.
- В
.settings.phpвключены флаги HttpOnly и Secure для куки-файлов. - В главном модуле прописан уникальный префикс кук (актуально для многосайтовости).
- Если есть поддомены, в настройках указана авторизация на весь домен (через
.домен). - Кастомные куки устанавливаются только через ядро D7 (
\Bitrix\Main\Web\Cookie). - На сайте выводится плашка согласия на сбор Cookie, удовлетворяющая требованиям ФЗ-152.
Ваш сайт не прошел чек-лист или вы сталкиваетесь с непонятными багами? Не уверены, что ваши куки настроены безопасно и корректно? Оставьте заявку на глубокий технический аудит сайта от нашего агентства SEOroad! Мы найдем все узкие места вашей инфраструктуры на 1С-Битрикс и настроим проект так, чтобы он работал как швейцарские часы.

Добавить комментарий