317  /  381

Шифрованные cookies

Просмотров: 261
Дата последнего изменения: 27.10.2020
Роберт Басыров
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5
Недоступно в редакциях:
Ограничений нет

  Шифрованные куки

Шифрованные куки (\Bitrix\Main\Web\CryptoCookie) позволяют отправлять данные пользователю, не раскрывая содержимое и не позволяя изменять данные внутри. Доступно с версии main 20.5.400.

Конфигурация

Для того, чтобы ядро могло шифровать данные необходимо указать в настройках /bitrix/.settings.php crypto_key. По умолчанию, в новых дистрибутивах он генерируется автоматически.

Если он отсутствует, то добавьте его в ручную в файл настроек ядра:

 [
        'value' => [
          'crypto_key' => 'mysupersecretphrase', //советуем устанавливать 32-х символьную строку из a-z0-9
        ],
        'readonly' => true,
      ],
      //...
   ];            

  Примеры использования

Установка Cookie

Чтобы установить шифрованную cookie, достаточно создать объект, как в сниппете ниже добавить в нужный Response:

$cookie = \Bitrix\Main\Web\CryptoCookie('someName', 'secret value');
\Bitrix\Main\Context::getCurrent()->getResponse()->addCookie($cookie);

Так как значение cookie ограничено по длине, а данные шифруются и упаковываются в base64, то во избежание потери данных, ядро может создать несколько cookies, в которых будет зашифрованное значение.

В итоге в http-ответе будет содержаться cookie someName cо значением -crpt-someName_0. И cookie someName_0 уже с шифрованным значением вида DRMg6jrwXO1aUxTvdyBYyT-3_bCqomI9MMN_enurA5abplMm2OiSlNdu_1zgjbkKT_3D3uT8366.

Чтение Cookie

Чтобы получить расшифрованное значение cookie, достаточно использовать стандартное API ядра по работе с cookies:

$httpRequest = \Bitrix\Main\Context::getCurrent()->getRequest();

echo $httpRequest->getCookie('someName');
//secret value

Ядро автоматически определяет, что cookie шифрованная или нет, распаковывает значение и дешифрует. Если значение не удаётся расшифровать, то будет получено пустое значение.


1
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии