-- Leo's gemini proxy

-- Connecting to byzoni.org:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=ru-RU

⏪ Вернуться к gemlog


2022-06-16


HTTP-заголовки играют важную роль в безопасности сайта.


Они обеспечивают еще один уровень безопасности, который помогает смягчить несколько атак и уязвимостей, включая SQL-инъекции, XSS, clickjacking и т.д.


Когда посещается веб-сайт, браузер запрашивает страницу у веб-сервера.


В ответ сервер отправляет содержимое с заголовками HTTP-ответа.


Эти заголовки содержат несколько данных, таких как Cache-Control, Content-Encoding, коды состояния и т.д.


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


Включение заголовков безопасности HTTP в сервере Nginx / Apache HTTPD.


Заголовки безопасности 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;
    }
}

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


X-Frame-Options


Этот заголовок защищает сайт от атак 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";

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


Content Security Policy(CSP)


Обеспечивает защиту от 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


Заголовок 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;

Примените изменения, перезапустив веб-сервер.


Feature-Policy


Разрешает или запрещает использование функций браузера во фрейме или iframe.


Заголовок может быть настроен следующим образом:


Для Apache:


add_header Feature-Policy "autoplay 'none'; camera 'none'" always;

Для Nginx


header always set Feature-Policy "autoplay 'none'; camera 'none'"

X-Content-Type-Options .


Этот заголовок также известен как защита браузера от сниффинга.


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


Это помогает уменьшить опасность “попутных” загрузок.


Заголовок может выглядеть следующим образом:


Для Apache:


header always set X-Content-Type-Options "nosniff"

Для Nginx:


X-Content-Type-Options: nosniff

Expect-CT


Этот заголовок предотвращает использование любых подозрительных сертификатов.


Он позволяет сайту сообщать и включать требования прозрачности сертификатов.


Когда этот заголовок введен в действие, браузеру предлагается проверить, не появился ли сертификат в публичных журналах 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;

Permissions-Policy


Это новый заголовок, он используется для контроля 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 на сайте. Вот некоторые из описанных здесь способов:


Заголовки ответа Chrome DevTools


Это быстрый способ получить доступ к заголовкам безопасности HTTP.


Перейдите в Инструменты разработчика нажав F12.


Находясь здесь, просмотрите заголовки ответов в панели Network.


Нажмите Ctrl + R (Cmd + R), чтобы обновить страницу.


Теперь нажмите на нужный URL и просмотрите заголовки.


Security Headers.com


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


Этот инструмент, разработанный Скоттом Хельме, сканирует и выставляет сайту оценку на основе имеющихся HTTPS-заголовков.


Оценка варьируется от A+ до оценки F.


Чтобы воспользоваться инструментом, нажмите на ссылку [SecurityHeaders](https://securityheaders.com)


image


Надеюсь, что благодаря вышеизложенной информации ваш результат не будет хуже моего!


Заключение


На этом мы заканчиваем это замечательное руководство.

-- Response ended

-- Page fetched on Sat Jun 1 06:44:25 2024