Поддержание безопасности сайта является одним из основных аспектов его успешного нахождения в Сети Интернет, а также такой же важной составляющей, как оптимизация и контент. Игнорирование имеющейся или возможной незащищенности сайта может привести к образованию серьезных проблем как для посетителей страниц сайта, так и для его владельца. Они могут быть простыми, к примеру, кликджекинг или DDoS-атаки, или очень серьезными, такими как распространение вирусов и потеря конфиденциальной информации. Позже зараженный, а также вредоносный сайт поисковики, хостинг или браузеры, скорее всего, заблокируют. Для дачи достойного отпора мошенникам, следует научиться использовать один из наиболее эффективных инструментов, повышающих безопасность сайта. Изучим этот вопрос подробно.
Что такое HTTP заголовки?
HTTP представляет собой протокол передачи наборов текстов, задействованный в обмене сведениями между приложением для пользователя (в качестве такового, обычно, выступает браузер) и сервером. Простыми словами это можно объяснить так. При входе на какой-то сайт, последний отвечает заголовками HTTP. Они передают браузеру, как взаимодействовать с сайтом. Заголовки HTTP в основном состоят из метаданных.
Примерами может послужить, формат сайта, его нахождение, применяемая кодировка, данные для авторизации и информация аутентификации. Такое общение между клиентом и сервером должно быть обеспечено необходимыми мерами. Поэтому есть даже заголовки, направленные на предотвращение разных кибератак.
Перечень HTTP заголовков сайта безопасности и их применение
Теперь, когда мы выяснили суть и предназначение, можно переходить к практике. Однако сперва рекомендуется подготовить бекап файла конфигурации, где и станут формироваться заголовки.
Чтобы убедиться в том, что на сервере имеется заголовок, используется специальная программа для проверки заголовков. Можно применить стандартную проверку ответа от Яндекса или иное приложение, осуществляющее данную функцию.
На следующем примере видно, что с безопасностью здесь точно не работали.
Узнаем об особенностях заголовков, их методах и проверим еще раз.
HTTP Strict Transport Security, HSTS.
Заголовок запрещает применение HTTP, форсирует применение безопасного соединения HTTPS, меняет запросы HTTP в HTTPS в автопилотном режиме, не дает пользовательским попыткам проходить шаги после сообщения, свидетельствующего о дополнительных вопросах с сертификатом, отбивает попытки перехватить трафик с использованием фальшивого сертификата. Перед добавлением заголовка нужно убедиться, что все страницы имеют доступ по HTTPS. В противном случае, они не отобразятся.
Заголовок запрещает применение HTTP, форсирует применение безопасного соединения HTTPS, меняет запросы HTTP в HTTPS в автопилотном режиме, не дает пользовательским попыткам проходить шаги после сообщения, свидетельствующего о дополнительных вопросах с сертификатом, отбивает попытки перехватить трафик с использованием фальшивого сертификата. Перед добавлением заголовка нужно убедиться, что все страницы имеют доступ по HTTPS. В противном случае, они не отобразятся.
Для этого используются следующие директивы:
- IncludeSubDomains – востребован, если его нужно распространить на поддомены.
- Max-age – этот интервал рассчитывается в сек. Все установленное время сайт станет отвечать по защищенному протоколу. Желательно предусмотреть срок, не меньше 18-20 недель.
- Preload – используется, если сайт нужно добавить в определенный перечень HSTS.
Данные директивы используются следующим образом :
X-Xss-Protection
HTTP Заголовки предупреждают проявление XSS-атак посредством активизации фильтра скриптинга между сайтами. Гугл, Фейсбук, Гитхаб применяют заголовок, и основное количество консультантов, занимающихся предупреждением проникновений, рекомендуют его.
При этом используются следующие директивы:
- 1 означает, что фильтр работает.
- 0 означает, что не работает.
- Mode=block означает, что предупреждается попытка обработки страницы при обнаружении атаки.
- Report=URL означает отсылку на определенный отчет URL, если произошла атака.
Директивы применяются так :
X-Frame-Options
За счет заголовка ограничивается автозагрузка ресурсных страниц во фреймах. Уменьшается незащищенность перед кликджекинг-атаками. Этот вариант поддерживается не всеми браузерами. Поэтому перед его добавлением нужно провести проверку на совместимость.
Используются следующие директивы:
- Allow-from означает разрешение загрузки во фреймах лишь конкретному URL.
- Sameorigin означает разрешение за счет применения фреймов в случае осуществления на единственном домене.
- Deny означает накладывание полнейшего запрета на автозагрузку за счет фреймов сайтов извне.
X-Content-Type-Options
Не дает пробиться фишинговым атакам, которые работают на базе корректировки MIME-типов, а также неразрешенных хотлинков. Если и не давать посетителям возможности загружать файлы, к примеру, имеющие расширение .js, то мошенники будут осуществлять загрузку на сервер, внедрив JavaScript-код, а также обратиться туда прямо, используя URL. Таким образом, это будет запущено вместе с нелицеприятными последствиями. В данном случае применяется единственная директива nosniff.
Content-Security-Policy (что означает политику защиты контента или CSP)
Успешно борется с кликджекингом, внедрением кода и XSS-атаками. Заголовок указывает серверу наиболее безопасную возможность хранения и выдачи материала, к примеру, скриптов, стилей, изображений и прочего. В данном случае блокируется загрузка с тех источников, которые не содержатся в этом перечне. При применении на сайте CDN, метрических счетчиков и других подобных скриптов, применяющих подключения извне, непременно используйте CSP. В нем содержатся инструкции о загрузке контента исключительно от источников, которые разрешены.
Составление заключается в следующем:
- Если нужно, предусматривается полный запрет загрузки в одной директиве. Тогда применяется none.
- Имеющийся домен обозначается как self.
- Для перечисления с URL применяется пробел.
Следующие примеры HTTP заголовков помогут в применении
Используется это так:
Referrer-Policy
Как правило, в ссылках, которые ведут с одного сайта на другой, указываются разные сведения, включая и секретную. Особая опасность заключается при переводе с соединения HTTPS на HTTP. Подобный заголовок может не дать распространиться информации.
No-referrer-when-downgrade
сведения направляются тогда, когда степень протокольной безопасности неизменяема или направлена на ресурс, обладающий лучшей защищенностью (HTTPS – HTTPS, HTTP – HTTP, HTTP — HTTPS).
No referrer-when-cross-origin
сведения направляются лишь тогда, когда степень протокольной безопасности не изменяется (HTTPS – HTTPS, HTTP — HTTP).
Origin
сохраняет лишь первоисточник файла следующим образом: https://domain.ru/page.html — https://domain.ru.
Origin-when-cross-origin
при направлении запроса на иную страницу или протокол работает как origin.
No-referrer
сведения, содержащие запросы, не направляются.
Применение
Фьюче-Полиси
За счет заголовка появляется возможность отключать и подключать разный функционал браузера посетителя при входе на сайт или изменять их.
К главным директивам относятся следующие:
- Geolocation – нахождение места расположения.
- Speaker – звуковое исполнение.
- Microphone – применение аудио.
- Fullscreen – наблюдение за соблюдением полноэкранного вида.
- Display-capture – захват экрана.
Составление осуществляется так:
- Запрет единственной директивы – none.
- Self – определяет имеющийся домен.
Применение
При повторе проверки HTTP заголовков одного сайта, будет видно, что они сделаны правильно и функционируют так, как и требовалось.
Конфигурация для файла .htaccaess:
Заключение
Теперь вам стало известно, как сделать свой сайт более безопасным. Обычно при этом сложностей не возникает. Главное в этом вопросе, подойти к делу с пониманием, спокойно и не спеша, делать работу, проверяя правильность всех шагов. Однако, если что-то не выходит или нет времени заниматься этой задачей, вы всегда можете обратиться к нам. Мы сделаем ваш сайт более защищенным.