Загрузка...
Загрузка...
Полное руководство по CSP: все директивы, nonce, hash, report-uri, strict-dynamic. Пошаговое внедрение, отладка, примеры для популярных фреймворков.
БезопасностьПрактическое руководство по настройке Content Security Policy для защиты от XSS. Директивы, примеры конфигурации, режим Report-Only и внедрение без поломки сайта.
БезопасностьГлубокое руководство по настройке HTTP-заголовков безопасности. Content-Security-Policy, HSTS, X-Frame-Options и другие механизмы защиты от атак на веб-приложения.
БезопасностьЧто такое хеш-функции, как работают MD5, SHA-1, SHA-256, SHA-512. Примеры использования, сравнение алгоритмов и онлайн-генератор хешей.
Поделитесь с коллегами или изучите другие материалы блога
Cookies хранят сессии, токены и настройки. Неправильная конфигурация атрибутов делает их уязвимыми к перехвату, краже через XSS и CSRF-атакам. Атрибуты Secure, HttpOnly и SameSite значительно снижают эти риски.
Проверить настройку cookies вашего сайта можно с помощью Cookie Analyzer и Security Headers на rechecker.ru.
Cookie передаётся только по HTTPS. При HTTP-соединении браузер не отправляет cookie — защита от перехвата в незащищённых сетях.
Set-Cookie: session=abc123; Secure
Рекомендация: всегда использовать Secure для production.
Cookie недоступна из JavaScript. Защита от кражи сессии через XSS: скрипт не сможет прочитать document.cookie.
Set-Cookie: session=abc123; HttpOnly; Secure
Рекомендация: HttpOnly для сессионных и аутентификационных cookies.
Определяет, когда cookie отправляется при cross-site запросах.
| Значение | Описание |
|---|---|
| Strict | Только при запросах с того же сайта |
| Lax | При переходе по ссылке (top-level navigation) — да; при iframe/XHR с другого сайта — нет |
| None | При cross-site запросах тоже (требует Secure) |
Set-Cookie: session=abc123; SameSite=Strict; Secure; HttpOnly
По умолчанию в современных браузерах SameSite=Lax для cookies без явного атрибута.
Path=/ — cookie доступна для всех путейDomain=example.com — для домена и поддоменов (осторожно: поддомены получат доступ)Время жизни cookie. Max-Age в секундах предпочтительнее Expires.
Set-Cookie: session=abc123; Max-Age=3600; Secure; HttpOnly; SameSite=Strict
Secure; HttpOnly; SameSite=Strict; Path=/
Максимальная защита. При необходимости OAuth/SSO с редиректами — SameSite=Lax.
Secure; SameSite=Strict
Без HttpOnly: токен должен читаться JavaScript для отправки в форме.
Secure; SameSite=Lax; Path=/
Secure; SameSite=None
Обязательно с Secure при SameSite=None.
Злоумышленник внедряет скрипт, который читает document.cookie и отправляет сессию на свой сервер.
Защита: HttpOnly — cookie не доступна из JS.
При HTTP cookie передаётся в открытом виде.
Защита: Secure — передача только по HTTPS.
Запрос с другого сайта (форма, img) отправляется с cookie пользователя.
Защита: SameSite=Strict или Lax; дополнительно — CSRF-токен.
Злоумышленник подсовывает известный ему session ID.
Защита: смена session ID при логине; HttpOnly и Secure.
app.use(cookieSession({
name: 'session',
keys: ['secret-key'],
maxAge: 24 * 60 * 60 * 1000,
secure: true,
httpOnly: true,
sameSite: 'strict'
}));
setcookie('session', $sessionId, [
'expires' => time() + 3600,
'path' => '/',
'domain' => '',
'secure' => true,
'httponly' => true,
'samesite' => 'Strict'
]);
response.set_cookie(
'session',
value=session_id,
secure=True,
httponly=True,
samesite='Strict',
max_age=3600
)
Для установки атрибутов при проксировании:
proxy_cookie_path / "/; HTTPOnly; Secure; SameSite=Strict";
curl -I https://example.com
В заголовках Set-Cookie проверьте наличие Secure, HttpOnly, SameSite.
Онлайн: Cookie Analyzer — разбор всех cookies с рекомендациями по безопасности и GDPR.
| Атрибут | Поддержка |
|---|---|
| Secure | Все современные браузеры |
| HttpOnly | Все современные браузеры |
| SameSite | Chrome 51+, Firefox 60+, Safari 12.1+ |
SameSite=None требует Secure. Без Secure браузер может игнорировать cookie.
Юридические аспекты и согласие на cookies: Cookie и GDPR: как настроить согласие на cookies.