
Cookie подходит для небольших настроек интерфейса. Например, сайт может запомнить выбранный язык между посещениями. При этом значение приходит от браузера: проверяйте его так же, как данные обычной формы.
Пример для HTTPS-сайта
$language = 'ru';
setcookie('site_language', $language, [
'expires' => time() + 30 * 86400,
'path' => '/',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax',
]);Вызов размещается до вывода HTML. В массиве $_COOKIE новое значение появится при следующем запросе. Параметр secure ограничивает передачу HTTPS-соединением, а httponly закрывает доступ из JavaScript. Если настройку должен читать клиентский код, это ограничение нужно учитывать при проектировании.
Проверяем входное значение
$language = $_COOKIE['site_language'] ?? 'ru';
if (!in_array($language, ['ru', 'kk', 'en'], true)) {
$language = 'ru';
}Не записывайте в cookie пароли и платёжные секреты. Флаг SameSite помогает ограничить некоторые межсайтовые запросы, но для изменяющих данные форм всё равно нужна отдельная защита CSRF.
Источники
Обсуждение 0
Оставьте первый комментарий.
Войдите, чтобы присоединиться к обсуждению.