Использование HTTP-заголовков для предупреждения уязвимостей сайта

Дневник админа

Используйте заголовки HTTP для устранения уязвимостей сайта

Безопасность веб-сайта — один из ключевых аспектов его благополучия в Интернете, не менее важный, чем оптимизация контента или SEO. Игнорирование текущих или потенциальных уязвимостей может привести к серьезным проблемам не только для посетителей сайта, но и для владельца сайта. От DDoS-атак и кликджекинга до утечки конфиденциальной информации и распространения вирусов. Как следствие, зараженный и частично вредоносный веб-ресурс, скорее всего, будет заблокирован поисковой системой, браузером или хостом. Чтобы защитить себя от злоумышленников, давайте узнаем один эффективный способ защитить ваш веб-сайт & mdash; заголовки HTTP.

Что такое заголовок HTTP?

 

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

Список заголовков безопасности HTTP и способы их использования

 

Теперь, когда вы понимаете концепцию и общую цель, давайте перейдем к практическим аспектам. Но прежде чем мы это сделаем, я также рекомендую вам убедиться, что у вас есть резервная копия файла конфигурации, который вы используете для создания заголовков. Nginx & mdash; nginx.conf; .htaccess; PHP & mdash; index.php (header.php/head.php) активного шаблона страницы.

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

Чтобы прояснить ситуацию, давайте рассмотрим пример, в котором безопасность веб-сайта явно страдает с обеих сторон.

Проверка безопасности сайта

Проверка безопасности сайта

Давайте посмотрим на заголовки, их особенности и использование, а затем повторим проверку с сайтом.

Строгая безопасность транспорта HTTP (HSTS)

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

Директивы:

max-age — интервал времени в секундах, в течение которого страница будет отвечать с использованием безопасного протокола. Рекомендуется период обучения не менее 18 недель. includeSubDomains & mdash; Укажите, хотите ли вы расширить домен на поддомены. предварительная загрузка & mdash; применяется, когда вы хотите добавить страницу к предопределенной.

Использование:

Nginx & ndash; в разделе "Сервер

" add_header Strict-Transport-Security "max-age = 10886400?; includeSubDomains";

.htaccess

 & lt; ifModule mod_headers.c & gt;
Заголовок установлен Strict-Transport-Security "max-age = 10886400; includeSubDomains"
& lt;/ifModule & gt;

PHP

 & lt ;? заголовок php («Строгая безопасность транспорта: max-age = 10886400; includeSubDomains»); ? & gt;

X-Xss-Protection

Предотвратите XSS-атаки, активировав фильтр межсайтовых сценариев.

Директивы:

1 & mdash; фильтр на 0 & mdash; отфильтровать mode = block & mdash; при обнаружении атаки обработка страницы будет запрещена report = URL & mdash; Отправляет отчет на указанный URL при обнаружении атаки

Использование:

Nginx & ndash; в разделе HTTP

 add_header X-XSS-Protection "1; mode = block";

.htaccess

 & lt; ifModule mod_headers.c & gt;
Заголовок установлен на X-XSS-Protection "1; mode = block"
& lt;/IfModule & gt;

PHP

 & lt ;? заголовок php ("X-XSS-Protection: 1; mode = block"); ? & gt;

Параметры X-Frame

Ограничивает загрузку страниц с фреймами. Это снижает восприимчивость к атакам кликджекинга.

Директивы:

ALLOW-FROM; & mdash; Разрешить загрузку только во фреймах для указанного url SAMEORIGIN & mdash; позволяет загружать страницы с фреймами, если это выполняется в одном домене. DENY & mdash; предотвращает загрузку сторонних фреймов

Использование:

Nginx — под сервером

 add_header X-Frame-Options "SAMEORIGIN";

.htaccess

 & lt; ifModule mod_headers.c & gt;
Заголовочный набор X-Frame-Options "SAMEORIGIN"
& lt;/ifModule & gt;

PHP

 & lt ;? заголовок php ("Параметры X-Frame: SAMEORIGIN"); ? & gt;

Параметры X-Content-Type

Подавление фишинговых атак на основе типов MIME и неавторизованных хотлинков. Даже если вы не разрешаете пользователям загружать исполняемые файлы с расширением .js, например, злоумышленник может загрузить изображение или текстовый файл на сервер с введенным кодом JavaScript и получить к нему доступ напрямую через URL-адрес, раскрывая его чем угодно. делать .был связан с этим. Есть только одна директива & mdash; nosniff.

Nginx & ndash; в разделе "Сервер"

 add_header X-Content-Type-Options nosniff;

.htaccess

 & lt; ifModule mod_headers.c & gt;
Набор заголовков "nosniff" X-Content-Type-Options
& lt;/ifModule & gt;

PHP

 & lt ;? заголовок php ("Параметры X-Content-Type: nosniff"); ? & gt;

Content-Security-Policy (политика безопасности контента, CSP)

Борется с кликджекингом, попытками внедрения кода и XSS-атаками. Идея состоит в том, чтобы сообщить серверу, где безопасно хранится и загружается контент, такой как сценарии, таблицы стилей, изображения и т. Д. Загрузка файлов из источников, не внесенных в белый список, будет заблокирована. Поэтому, если на вашем веб-сайте используются CDN, счетчики показателей или другие скрипты, использующие внешние подключения, обязательно добавьте их.

Основные директивы:

источник по умолчанию & mdash; источники по умолчанию; script-src & mdash; скрипты; плагины src-object & mdash; (включая Flash и Java); style-src & mdash; стиль; img-src & mdash; фотографий; media-src & mdash; видео аудио; кадр-источник & mdash; кадры; font-src & mdash; шрифты;

С полным списком описаний вы можете.

Правила составления:

Если вы хотите явно запретить загрузку содержимого одной директивы, используйте & mdash; никто; сам & mdash; это текущий домен; При указании URL-адреса используется пробел.

Примеры:

  1. . Content-Security-Policy: default-src «сам»; Content-Security-Policy: default-src «сам»; style-src 'self' http://domain.ru; script-src http://domain.ru.

.

Использование:

Nginx — в разделе "Сервер"

 add_header Content-Security-Policy 'style-src' self ';

.htaccess

 & lt; ifModule mod_headers.c & gt;
Заголовочный набор Content-Security-Policy "style-src 'self'"
& lt;/ifModule & gt;

PHP

 & lt ;? php header ("Content-Security-Policy: style-src 'self'"); ? & gt;

Политика реферера

Часто ссылки с одной страницы на другую могут содержать различную информацию, в том числе конфиденциальную. Это особенно опасно при переключении с HTTPS на HTTP-соединение. Этот заголовок помогает предотвратить утечки.

Основные директивы:

no-referrer-when-downgrade (рекомендуется) — информация отправляется, когда уровень безопасности протокола остается неизменным или опережаетна более безопасный протокол (HTTP> HTTP, HTTPS> HTTPS или HTTP> HTTPS); отсутствие реферера при перекрестном происхождении & mdash; информация отправляется только при неизменном уровне безопасности протокола (HTTP> HTTP или HTTPS> HTTPS); происхождение & mdash; оставляет только источник документа: https://domain.ru/page.html & gt; https://domain.ru; происхождение при перекрестном происхождении & mdash; если запрос направлен к другому протоколу или Интернет-ресурсу, он вызывается как источник; без реферера & mdash; с запросом информация не отправляется.

Доступен полный список и описание.

Использование:

Nginx — под сервером

 add_header Политика реферера "origin-when-cross-origin";

.htaccess

 & lt; ifModule mod_headers.c & gt;
Заголовок задает политику-реферер "origin-when-cross-origin"
& lt;/ifModule & gt;
 

PHP

 & lt ;? заголовок php ("Политика-реферера: происхождение-при-перекрестном происхождении"); ? & gt;

Политика собственности

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

Базовые директивы:

геолокация & mdash; местоположение; динамик & mdash; воспроизводит звуки; микрофон & mdash; использование вывода звука; полноэкранный & mdash; управление полноэкранным режимом; захват изображения & mdash; снимок экрана.

Доступен полный список и описание.

Правила составления:

запретить в в одном & mdash; недостаток; сам & mdash; это текущий домен.

Использование:

Nginx — в разделе "Сервер"

 add_header Feature-Policy «динамик 'none'»;

.htaccess

 & lt; ifModule mod_headers.c & gt;
Заголовок установлен Feature-Policy «динамик 'none'»
& lt;/ifModule & gt;

PHP

 & lt ;? php header ("Feature-Policy: динамик 'none'"); ? & gt;

Хорошо, теперь, если вы дважды проверите ту же страницу, вы можете убедиться, что заголовки установлены правильно и работают должным образом.

Конфигурация безопасности сайта

Пример конфигурации для файла .htaccess:

htaccess для сайта

Вкратце

Теперь вы знаете, как использовать заголовки HTTP для повышения безопасности своего веб-сайта. Обычно это легко, просто выбирайте правильный подход и не торопитесь с каждым шагом.

Оцените статью