-- Leo's gemini proxy
-- Connecting to byzoni.org:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini;lang=ru-RU
2022-06-16
HTTP-заголовки играют важную роль в безопасности сайта.
Они обеспечивают еще один уровень безопасности, который помогает смягчить несколько атак и уязвимостей, включая SQL-инъекции, XSS, clickjacking и т.д.
Когда посещается веб-сайт, браузер запрашивает страницу у веб-сервера.
В ответ сервер отправляет содержимое с заголовками HTTP-ответа.
Эти заголовки содержат несколько данных, таких как Cache-Control, Content-Encoding, коды состояния и т.д.
Собранная информация из заголовков может помочь вам описать коммуникацию и, следовательно, улучшить безопасность вашего сайта.
Заголовки безопасности HTTP, которые будут рассмотрены в этом руководстве, следующие:
HTTP Strict Transport Security (HSTS)
Content Security Policy (CSP)
X-Frame-Options
X-XSS-Protection
X-Content-Type-Options
Feature-Policy
Permissions-Policy
Expect-CT
Эти заголовки могут быть применены глобально или к конкретному сайту в файле виртуального хоста Nginx/Apache путем добавления HTTP Security Headers в блок Server.
Для Apache:
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Для Nginx:
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
Ниже приведен пример конфигурационного файла Nginx с добавленным заголовком HTTP Strict Transport Security (HSTS).
upstream portal { server localhost:8080; } server { listen 80; server_name portal.test; add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload'; location / { proxy_pass http://portal; } }
После добавления файла перезапустите веб-сервер, чтобы применить изменения.
Этот заголовок защищает сайт от атак clickjacking, отключая iframe на вашем сайте.
Он сообщает браузеру, можно ли встраивать ваш сайт в iframe или нет.
В настоящее время он поддерживается в Chrome 4.1+, Firefox 3.6.9+, IE 8+, Safari 4+ и Opera 10.5+.
Обычно существует 3 способа настройки этого заголовка. Это:
DENY – этот вариант полностью отключает функции iframe.
SAMEORIGIN – позволяет использовать функции iframe всем, кто имеет одинаковое происхождение.
ALLOW-FROM – разрешает использование функции iframe с определенных URL-адресов.
Ниже показано, как может быть настроен заголовок X-Frame-Options.
Для Apache:
Header always set X-Frame-Options "SAMEORIGIN"
Для Nginx:
add_header X-Frame-Options "SAMEORIGIN";
После добавления файла перезапустите веб-сервер, чтобы применить изменения.
Обеспечивает защиту от XSS (Cross-Site Scripting) и других атак с внедрением кода.
Это делается путем определения разрешенных источников контента, которые позволяют браузеру загружать их.
Существует множество производных, которые могут быть использованы в Content-Security-Policyentry.
Например, приведенные ниже сценарии разрешают содержимое из текущего домена (self)
Для Apache:
Header always set Content-Security-Policy "default-src 'self'; font-src *;img-src * data:; script-src *; style-src *;"
Для Nginx:
add_header Content-Security-Policy "default-src 'self'; font-src *;img-src * data:; script-src *; style-src *";
Сохраните изменения и перезагрузите браузер.
Заголовок X-XSS-Protection/Cross-Site Scripting используется для защиты сайта от атак путем включения фильтра межсайтового скриптинга (XSS).
Эта функция включена по умолчанию в современных браузерах, таких как Safari, Internet Explorer 8+ и Google Chrome.
Этот заголовок обычно предотвращает загрузку страницы при обнаружении атак межсайтового скриптинга (XSS).
Заголовок может быть реализован следующими способами:
X-XSS-Protection: 0 – полностью отключает фильтр.
X-XSS-Protection: 1 – обеспечивает соблюдение заголовка, но только санирует потенциально вредоносные скрипты.
X-XSS-Protection: 1; mode=block – применяет функцию и полностью блокирует страницу.
Эта функция может быть включена на вашем веб-сервере путем добавления нужной реализации в блок вашего сервера. Например:
Для Apache:
Header always set X-XSS-Protection "1; mode=block"
Для Nginx:
add_header X-XSS-Protection "1; mode=block" always;
Примените изменения, перезапустив веб-сервер.
Разрешает или запрещает использование функций браузера во фрейме или iframe.
Заголовок может быть настроен следующим образом:
Для Apache:
add_header Feature-Policy "autoplay 'none'; camera 'none'" always;
Для Nginx
header always set Feature-Policy "autoplay 'none'; camera 'none'"
Этот заголовок также известен как защита браузера от сниффинга.
Он используется для указания браузеру следовать типам MIME, указанным в заголовке.
Это помогает уменьшить опасность “попутных” загрузок.
Заголовок может выглядеть следующим образом:
Для Apache:
header always set X-Content-Type-Options "nosniff"
Для Nginx:
X-Content-Type-Options: nosniff
Этот заголовок предотвращает использование любых подозрительных сертификатов.
Он позволяет сайту сообщать и включать требования прозрачности сертификатов.
Когда этот заголовок введен в действие, браузеру предлагается проверить, не появился ли сертификат в публичных журналах CT.
Этот заголовок может быть настроен следующим образом:
Для Apache:
header always set Expect-CT "max-age=604800, enforce, report-uri="https://www.example.com/report"
Для Nginx:
add_header Expect-CT "max-age=604800, enforce, report-uri='https://www.example.com/report' always;
Это новый заголовок, он используется для контроля API и функций, которые могут быть использованы в браузере.
Этот заголовок может быть включен на веб-сервере, как показано ниже:
Для Apache:
Header always set Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()"
Для Nginx:
add_header Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()";
Сохраните изменения и перезапустите веб-сервер.
Существует множество способов проверки заголовков безопасности HTTP на сайте. Вот некоторые из описанных здесь способов:
Это быстрый способ получить доступ к заголовкам безопасности HTTP.
Перейдите в Инструменты разработчика нажав F12.
Находясь здесь, просмотрите заголовки ответов в панели Network.
Нажмите Ctrl + R (Cmd + R), чтобы обновить страницу.
Теперь нажмите на нужный URL и просмотрите заголовки.
Это еще один инструмент, который можно использовать для проверки HTTP-заголовков безопасности.
Этот инструмент, разработанный Скоттом Хельме, сканирует и выставляет сайту оценку на основе имеющихся HTTPS-заголовков.
Оценка варьируется от A+ до оценки F.
Чтобы воспользоваться инструментом, нажмите на ссылку [SecurityHeaders](https://securityheaders.com)
Надеюсь, что благодаря вышеизложенной информации ваш результат не будет хуже моего!
На этом мы заканчиваем это замечательное руководство.
-- Response ended
-- Page fetched on Sat Jun 1 06:44:25 2024