[Cheat Sheet] Заголовки для защиты сайта

Заголовки HTTP-ответов играют ключевую роль в защите веб-приложений от различных атак. Ниже приведены таблицы с описанием атак и заголовками, которые помогают защититься, с примерами их использования.

Защита от XSS (Cross-Site Scripting)

XSS (Cross-Site Scripting) — это уязвимость, при которой злоумышленник внедряет вредоносный JavaScript в страницу, что позволяет выполнить произвольный код в браузере жертвы.

Для защиты от XSS используются специальные HTTP-заголовки, которые ограничивают выполнение скриптов и предотвращают внедрение вредоносного кода.

Заголовок

Пример

Как помогает

Content-Security-Policy

Content-Security-Policy: default-src 'self'; script-src 'self'

Ограничивает источники, из которых можно загружать скрипты.

X-XSS-Protection

X-XSS-Protection: 1; mode=block

Включает встроенную защиту браузера от XSS. 1 включает защиту. mode=block полностью блокирует страницу при обнаружении XSS. Устаревший заголовок, но все еще полезен для старых браузеров.

X-Content-Type-Options

X-Content-Type-Options: nosniff

Запрещает браузеру "угадывать" тип контента, что предотвращает выполнение кода. Предотвращает выполнение скриптов, замаскированных под другие типы файлов.

Set-Cookie

Set-Cookie: session_id=12345; Secure; HttpOnly; SameSite=Strict

Защищает cookies от кражи через XSS. Secure передает cookies только по HTTPS. HttpOnly запрещает доступ к cookies через JavaScript. SameSite=Strict предотвращает отправку cookies в межсайтовых запросах.


Защита от CSRF (Cross-Site Request Forgery)

Атака: Подделка запросов от имени пользователя.

Заголовок

Пример

Как помогает

SameSite (в cookies)

Set-Cookie: session_id=12345; SameSite=Strict

Ограничивает отправку cookies только в рамках одного сайта.

Referrer-Policy

Referrer-Policy: strict-origin-when-cross-origin

Контролирует, какие данные передаются в заголовке Referer.


Защита от Clickjacking

Атака: Обман пользователя для выполнения действий без его ведома.

Заголовок

Пример

Как помогает

X-Frame-Options

X-Frame-Options: DENY

Запрещает встраивание страницы в <iframe>, что предотвращает Clickjacking.

Content-Security-Policy

Content-Security-Policy: frame-ancestors 'none'

Аналогично X-Frame-Options, но с более гибкими настройками.


Защита от MIME-sniffing

Атака: Браузер "угадывает" тип контента, что может привести к выполнению вредоносного кода.

Заголовок

Пример

Как помогает

X-Content-Type-Options

X-Content-Type-Options: nosniff

Запрещает браузеру "угадывать" тип контента.


Защита от утечки информации

Атака: Раскрытие внутренней информации о сервере или приложении.

Заголовок

Пример

Как помогает

Server

Server: Apache → лучше удалить или изменить на общее значение.

Скрывает информацию о сервере и его версии.

X-Powered-By

Удалить или изменить на общее значение.

Скрывает информацию о технологиях, используемых на сервере.


Защита от перехвата данных (MitM)

Атака: Перехват данных между клиентом и сервером.

Заголовок

Пример

Как помогает

Strict-Transport-Security (HSTS)

Strict-Transport-Security: max-age=31536000; includeSubDomains

Принудительно использует HTTPS для всех запросов.

Set-Cookie (флаг Secure)

Set-Cookie: session_id=12345; Secure; HttpOnly

Передает cookies только по HTTPS, защищая их от перехвата.


Защита от атак на кэш

Атака: Подмена контента в кэше браузера или прокси.

Заголовок

Пример

Как помогает

Cache-Control

Cache-Control: no-store, no-cache, must-revalidate

Запрещает кэширование контента.

Pragma

Pragma: no-cache

Обеспечивает обратную совместимость для старых браузеров.


Защита от атак на CORS (Cross-Origin Resource Sharing)

CORS (Cross-Origin Resource Sharing) — это механизм, который позволяет веб-страницам делать запросы к ресурсам на другом домене (origin), отличном от того, с которого была загружена страница.

CORS — это важный механизм для безопасного взаимодействия между разными origins. Он не предотвращает XSS напрямую, но помогает ограничить доступ к данным, которые могут быть украдены через XSS или другие атаки. Правильная настройка CORS — это ключевой элемент безопасности современных веб-приложений.

Заголовок

Пример

Как помогает

Access-Control-Allow-Origin

Access-Control-Allow-Origin: https://trusted-site.com

Ограничивает источники, которые могут делать запросы.

Access-Control-Allow-Credentials

Access-Control-Allow-Credentials: true (только для доверенных источников)

Контролирует, могут ли запросы включать cookies или другие учетные данные.

Access-Control-Allow-Methods

Access-Control-Allow-Methods: GET, POST, OPTIONS

Указывает, какие HTTP-методы разрешены для межсайтовых запросов.

Access-Control-Allow-Headers

Access-Control-Allow-Headers: Content-Type, Authorization

Указывает, какие заголовки разрешены в запросах.

Access-Control-Expose-Headers

Access-Control-Expose-Headers: X-Custom-Header

Позволяет клиенту получать доступ к определенным заголовкам ответа.

Access-Control-Max-Age

Access-Control-Max-Age: 86400 (1 день)

Указывает, как долго результаты предварительного запроса (preflight) могут кэшироваться.

Access-Control-Request-Method

Используется в предварительных запросах (preflight).

Указывает метод, который будет использоваться в основном запросе.

Access-Control-Request-Headers

Используется в предварительных запросах (preflight).

Указывает заголовки, которые будут использоваться в основном запросе.

Last updated

Was this helpful?