Cookie, сессии и авторизация
Безопасность cookie конфигурируется в секции cookies файла .settings.php установкой директив secure, http_only и политики samesite. Для исключения подделки клиентских параметров применяются цифровая подпись Bitrix\Main\Security\Sign\Signer либо зашифрованные куки CryptoCookie, требующие совпадения ключа crypto_key на всех веб-серверах проекта.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
HttpOnly
-
2
Secure
-
3
SameSite
Материалы
Официальная документация
-
Защищённые cookie Новая дока
-
Сессии Новая дока
Проверь себя
Пентест пишет, что cookie сайта уходят без Secure, хотя проект давно на HTTPS. Почему?
Класс Cookie берёт умолчания из секции cookies в .settings.php, где secure по умолчанию false. Нужна секция с secure => true, тогда все объекты Cookie наследуют флаг без правок в коде.
Что сломается, если в обработчике добавить cookie через addCookie() и тут же прочитать её через getCookie()?
Ничего не прочитается: cookie попадает в ответ, а в объекте запроса появится только на следующем хите. Значение в том же запросе нужно брать из переменной, а не из cookie.
На двух серверах за балансировщиком защищённая cookie расшифровывается через раз. Где искать причину?
В crypto_key в .settings.php: он должен совпадать на всех серверах, иначе CryptoCookie, выписанная одним сервером, не читается другим.
Чем CryptoCookie отличается от Signer и когда достаточно подписи?
CryptoCookie шифрует значение, его нельзя прочитать. Signer только подписывает: значение видно, но подменить его нельзя. Если секретность не нужна, хватает подписи, и это дешевле.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить