Secure Cookie в Битрикс: как включить флаг Secure для PHPSESSID и других cookies
ОглавлениеЧто такое атрибут SecureПочему это считается уязвимостьюКак проверить наличие Secure CookieВключение Secure Cookie через настройки БитриксНастройка через php.iniНастройка через .settings.phpОбязательный редирект на HTTPSДополнительные меры защитыЗаключение
При проведении аудита безопасности сайта на 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 через настройки Битрикс
Откройте административную часть сайта:- Настройки
- Настройки продукта
- Настройки модулей
- Главный модуль
Настройка через 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.