При проведении аудита безопасности сайта на 1С-Битрикс нередко встречается замечание об отсутствии атрибута Secure у сессионных cookies. Такая проблема может быть обнаружена автоматическими сканерами безопасности, пентестерами или средствами анализа веб-приложений.
В данной статье разберем, что такое Secure Cookie, почему отсутствие этого атрибута считается уязвимостью и как правильно настроить его в Битрикс.
Что такое атрибут Secure
Атрибут Secure указывает браузеру, что cookie должна передаваться только по защищенному протоколу HTTPS.
Без данного атрибута браузер может отправить cookie и по обычному HTTP-соединению, что создает риск перехвата данных злоумышленником при атаке типа Man-in-the-Middle (MITM).
Пример небезопасной cookie:
Set-Cookie: PHPSESSID=abcdef123456; path=/
Пример безопасной cookie:
Set-Cookie: PHPSESSID=abcdef123456; path=/; Secure; HttpOnly; SameSite=Lax
Почему это считается уязвимостью
Если сессионная cookie передается без флага Secure, злоумышленник может попытаться перехватить идентификатор сессии пользователя и получить доступ к его учетной записи.
Подобные замечания часто встречаются в отчетах:
- Acunetix
- Burp Suite
- Nessus
- Pentest Tools
- Positive Technologies MaxPatrol
Особенно критично это для административной панели Битрикс и личных кабинетов пользователей.
Как проверить наличие Secure Cookie
Проверить ответ сервера можно через curl:
curl -k -I https://example.ru/
Если в ответе присутствует строка:
Set-Cookie: PHPSESSID=...
и отсутствует атрибут Secure, настройку необходимо исправить.
Включение Secure Cookie через настройки Битрикс
Откройте административную часть сайта:
- Настройки
- Настройки продукта
- Настройки модулей
- Главный модуль
В разделе настроек безопасности включите использование защищенных cookies.
После сохранения настроек новые сессии будут создаваться с флагом Secure.
Настройка через php.ini
Если требуется включить защиту на уровне PHP, добавьте следующие параметры:
session.cookie_secure = On
session.cookie_httponly = On
session.cookie_samesite = Lax
После изменения конфигурации необходимо перезапустить PHP-FPM или веб-сервер.
Настройка через .settings.php
Для современных версий Битрикс можно указать параметры сессий в файле настройки:
<?php
'session' => [
'value' => [
'mode' => 'default',
'handlers' => [
'general' => [
'type' => 'native',
'options' => [
'cookie_secure' => true,
'cookie_httponly' => true,
'cookie_samesite' => 'Lax',
],
],
],
],
],
Обязательный редирект на HTTPS
Перед включением Secure Cookie необходимо убедиться, что весь сайт работает исключительно по HTTPS.
Для nginx можно использовать следующий редирект:
server {
listen 80;
server_name example.ru www.example.ru;
return 301 https://$host$request_uri;
}
Если сайт доступен одновременно по HTTP и HTTPS, после включения Secure могут возникнуть проблемы с авторизацией пользователей.
Дополнительные меры защиты
Помимо Secure рекомендуется использовать:
- HttpOnly для защиты от XSS;
- SameSite=Lax или SameSite=Strict;
- обязательный HTTPS для всех страниц сайта;
- актуальную версию Битрикс и PHP.
Заключение
Отсутствие атрибута Secure у cookies в Битрикс является распространенным замечанием при проведении аудита безопасности. Исправление обычно сводится к включению защищенных cookies, настройке HTTPS и установке дополнительных параметров безопасности для сессий.
После внедрения настроек рекомендуется повторно проверить заголовки Set-Cookie через браузер или curl и убедиться, что для всех сессионных cookies присутствует атрибут Secure.