Семь важных заголовков безопасности для вашего веб-сайта
При обеспечении безопасности вашего веб-сайта важно минимизировать потенциальные уязвимости и добавлять дополнительные уровни защиты. Одним из таких уровней, который вы можете (и должны) добавить, являются правильные HTTP-заголовки безопасности.
При обработке запросов сервер должен включать заголовки безопасности, которые помогают предотвратить атаки, такие как XSS (межсайтовый скриптинг), MITM (атаки "человек посередине") и кликджекинг. Хотя заголовки безопасности не гарантируют 100% защиту от всех атак, они помогают современным браузерам обеспечивать более высокий уровень безопасности.
В этом руководстве мы рассмотрим семь наиболее важных и эффективных HTTP-заголовков безопасности, которые помогут усилить защиту вашего веб-сайта, работающего на Apache.
Содержание
- X-XSS-Protection
- X-Frame-Options
- X-Content-Type-Options
- HTTP Strict Transport Security (HSTS)
- Referrer-Policy
- Feature-Policy
- Content-Security-Policy
- Итоговая конфигурация
Примечание: Вы можете проверить заголовки безопасности вашего сайта с помощью бесплатного онлайн-инструмента, например SecurityHeaders.com.
1. X-XSS-Protection
Заголовок безопасности X-XSS-Protection включает фильтр XSS, встроенный в современные браузеры (IE8+, Chrome, Firefox, Safari и др.).
Рекомендуемая настройка:
# X-XSS-Protection
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>
Добавьте этот код в .htaccess или файл конфигурации сервера, чтобы браузер блокировал любые вредоносные скрипты.
Дополнительные ресурсы:
2. X-Frame-Options
Заголовок X-Frame-Options (XFO) защищает пользователей от атак типа clickjacking (встраивание вредоносных страниц в iframe).
Рекомендуемая настройка:
# X-Frame-Options
<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
</IfModule>
Этот код запрещает загрузку содержимого в iframe с других доменов, но разрешает встраивание внутри самого сайта.
Дополнительные ресурсы:
3. X-Content-Type-Options
Заголовок X-Content-Type-Options предотвращает атаки с подменой MIME-типов (MIME-type sniffing).
Рекомендуемая настройка:
# X-Content-Type-Options
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
</IfModule>
Этот заголовок запрещает браузерам игнорировать MIME-тип, установленный сервером, что предотвращает некоторые виды атак.
Дополнительные ресурсы:
4. HTTP Strict Transport Security (HSTS)
Заголовок Strict-Transport-Security (HSTS) заставляет браузеры использовать только HTTPS.
Рекомендуемая настройка:
# Strict-Transport-Security
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</IfModule>
Этот код заставляет браузеры автоматически перенаправлять HTTP-запросы на HTTPS, предотвращая атаки типа MITM.
Дополнительные ресурсы:
5. Referrer-Policy
Заголовок Referrer-Policy управляет передачей информации о предыдущей странице (реферере).
Рекомендуемая настройка:
# Referrer-Policy
<IfModule mod_headers.c>
Header set Referrer-Policy "same-origin"
</IfModule>
Этот код разрешает передачу реферера только внутри текущего домена.
Дополнительные ресурсы:
6. Feature-Policy (Permissions-Policy)
Заголовок Feature-Policy (переименован в Permissions-Policy) управляет доступом веб-страницы к API браузера.
Рекомендуемая настройка:
# Feature-Policy (Permissions-Policy)
<IfModule mod_headers.c>
Header set Feature-Policy "geolocation 'self'; vibrate 'none'"
</IfModule>
Этот код разрешает доступ к геолокации только для текущего сайта и запрещает вибрацию.
Дополнительные ресурсы:
7. Content-Security-Policy (CSP)
Заголовок Content-Security-Policy (CSP) предотвращает атаки XSS, контролируя, какие ресурсы можно загружать на страницу.
Пример 1 – Разрешить загрузку только с CDN:
# Content-Security-Policy
<IfModule mod_headers.c>
Header set Content-Security-Policy "default-src https://cdn.example.com; child-src 'none'; object-src 'none'"
</IfModule>
Пример 2 – Ограничить скрипты и стили:
# Content-Security-Policy
<IfModule mod_headers.c>
Header set Content-Security-Policy "default-src 'none'; img-src 'self'; script-src 'self' https://code.jquery.com; style-src 'self'"
</IfModule>
Дополнительные ресурсы:
Финальная настройка
Вот итоговая конфигурация всех рассмотренных заголовков безопасности:
# Security Headers
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header set Referrer-Policy "same-origin"
Header set Feature-Policy "geolocation 'self'; vibrate 'none'"
</IfModule>
Перед добавлением этих заголовков убедитесь, что они соответствуют требованиям вашего сайта, и тщательно протестируйте перед внедрением.
Блог • Автор: Джефф Старр
Использование HTTP-заголовков безопасности – важный шаг в защите веб-сайта от киберугроз!