Что это за загадочные письмена?
В процессе запроса сайта с сервера — браузер и сервер обмениваются информацией. Сервер может заранее сообщить браузеру, что можно и что нельзя делать с сайтом.
Про взаимодействие браузера и сервера читаем здесь
Security HTTP Headers для «чайников»
Например сервер может указать браузеру:
- сразу переходить на HTTPS-версию
- запрещать открывать сайт во фрейме
- и так далее
За это как раз отвечают HTTP заголовки безопасности.
Проверить свой сайт можно на ресурсе
Для сайта https://seotable.ru/ всё хорошо.
На ресурсе также ведется своя статистика тестирования
1 408 191 / 134 749 409 = всего 1% протестированных сайтов имеют все необходимые HTTP заголовки безопасности.
За эту красоту отвечают настройки в Apache в файле .htaccess
# HTTP security headers <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" Header always set X-Frame-Options "SAMEORIGIN" Header always set Content-Security-Policy "upgrade-insecure-requests" Header always set X-XSS-Protection "1; mode=block" Header always set X-Content-Type-Options "nosniff" Header always set Referrer-Policy: "strict-origin-when-cross-origin" Header always set Permissions-Policy "interest-cohort=(), geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()" Header always set Expect-CT "max-age=7776000, enforce" </IfModule> #
Конструкция <IfModule mod_headers.c>…</IfModule> нужна для исключения ошибки, если модуль HTTP заголовков mod_headers.c не установлен в Apache.
В чем разница между Header always set и Header set в Apache? Без «always» Ваши заголовки будут выставляться только на успешные ответы сервера 200 OK.
Примечание: включить HTTP заголовки безопасности можно также:
- через настройки Nginx
- с помощью PHP функции header() — например, в WordPress можно список заголовков через эту функцию добавить прямо в файл wp-config.php (это же исполняемый файл PHP) или использовать функцию wp_headers() в файле function.php или в плагине
- с помощью метатегов HTML <META HTTP-EQUIV=»имя» CONTENT=»содержимое»> в разделе <head>…</head>
ВАЖНО: META-теги с атрибутом HTTP-EQUIV эквивалентны HTTP-заголовкам. Теги такой формы могут дать такой же эффект, что и HTTP-заголовки, и на некоторых серверах автоматически могут быть переведены в настоящие HTTP-заголовки. Некоторые генерируемые сервером поля заголовков не могут быть подменены значениями из META-тегов (в частности Date), другие подменяются только при ненормальном статус-коде (<>200). Когда заголовок не понятен, то значение HTTP-заголовка превалирует над значением META-тегов.
Вот в этой статье подробнее
Какие бывают META теги и зачем они нужны
Заголовок HTTP Strict Transport Security (HSTS)
Самый известный заголовок Strict Transport Security (HSTS) — это механизм политики безопасности, который позволяет защитить сайт от попытки небезопасного соединения.
У хороших хостеров включается кнопкой в панели управления при подключении HTTPS
Суть HSTS — при установлении соединения с сервером браузер будет сразу использоваться протокол HTTPS, не дожидаясь переадресации с HTTP.
Тоже самое можно реализовать вручную, указав дополнительную инструкцию в файле .htaccess
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Принимаемые значения:
- max-age=31536000 время в секундах (1 год минимум), которое браузер должен помнить о заголовке.
- includeSubDomains Если указать это опциональное значение, то заголовок распространяется и на все поддомены (соответственно и поддомены должны иметь SSL-сертификат и HTTPS протокол).
- preload если владелец сайта хочет, чтобы домен попал в предопределённый список, поддерживаемый Chrome (и используемый Firefox и Safari)
Если Вы включили настройку HTST у хостера (Nginx) и дополнительно прописали этот же заголовок в Apache — получите предупреждение о дублировании
Проверить использовании заголовка HSTS можно с помощью сервиса
Посмотрим на результат
Тоже все хорошо. Предлагается добавить проверяемый сайт в листинг браузера Хром (т.к. есть директива preload).
HSTS preload list — это листинг сайтов chromium.org, которые по умолчанию в браузере будут открываться сразу только по HTTPS, даже если пользователь попытается обратиться к домену по http. Листинг используется большинством современных браузеров.
Возможные ошибки:
- заголовок HSTS включен в Nginx и в Apache (и возможно где-то еще)
- нет директивы includeSubDomains или preload
- время в секундах слишком маленькое (рекомендуется 31536000 сек = 1 год)
Заголовок HTTP X-Frame-Options
Злоумышленник направил вас на свой веб-сайт, на котором отображается очень привлекательная ссылка для нажатия. К сожалению, он также встроил в страницу <iframe> your-bank.com/transfer?amount=-1&[attacker@gmail.com]</iframe>, но скрыл его, установив прозрачность на 0%.
Это вариант атаки с помощью кликджеккинга. Пользователь намеревается нажать на конкретную ссылку, в то время как браузер получит клик по «невидимой» странице, которая была встроена в виде фрейма.
Заголовок X-Frame-Options служит инструкцией для браузера не загружать Вашу страницу в frame/iframe. Не все браузеры поддерживают этот вариант — нужно проверять.
Инструкция в файле .htaccess
Header always set X-Frame-Options "SAMEORIGIN"
Параметры:
- SAMEORIGIN позволяет загрузку контента в frame/iframe только если фрейм и страница, его загружающая, расположены на одном домене
- DENY запрещает загрузку контента в frame/iframe
- ALLOW-FROM допускает загрузку контента в фреймах только для определенного URI
Заголовок X-Frame-Options считался лучшим способом предотвращения атак с использованием щелчков на основе фреймов до тех пор, пока через несколько лет не вступил в игру еще один заголовок — Content Security Policy или CSP для краткости.
Заголовок HTTP Content-Security-Policy (CSP)
Content Security Policy (CSP), что в переводе означает «Политика безопасности контента». Допустим у Вас есть сайт, на котором вы показываете рекламу пользователям и честно зарабатываете деньги. И всё идёт хорошо, пока к вам не начнут ходит пользователи с заражёнными браузерами. Заражённый браузер будет подменять рекламу на вашем сайте на свою и показывать её пользователю.
Злоумышленник может создать определенную ссылку, которая выполняет произвольный JavaScript в браузере жертвы.
Инструкция в файле .htaccess
Header always set Content-Security-Policy "upgrade-insecure-requests"
Указатель upgrade-insecure-requests заставляет браузер волшебным образом переделать все HTTP-запросы в HTTPS-запросы.
Однако CSP касается не только используемого протокола. Он предлагает детальные способы определения того, какие ресурсы и действия разрешены на вашем сайте. Вы можете, например, указать, какие скрипты должны выполняться или откуда загружать изображения. Если что-то не разрешено, браузер блокирует это действие и предотвращает потенциальные атаки на ваш сайт.
Интересным вариантом CSP является режим только для отчетов. Вместо того чтобы использовать заголовок Content-Security-Policy, вы можете сначала проверить влияние CSP на ваш сайт, сказав браузеру просто сообщать об ошибках, не блокируя выполнение скрипта и т. д., Используя заголовок Content-Security-Policy-Report-Only.
Заголовок HTTP X-XSS-Protection
Несмотря на то, что он заменен CSP, заголовок X-XSS-Protection обеспечивает аналогичный тип защиты. Этот заголовок используется для блокировки атак XSS в старых браузерах, которые не полностью поддерживают CSP. Этот заголовок не поддерживается Firefox.
Инструкция в файле .htaccess
Header always set X-XSS-Protection "1; mode=block"
Заголовок ответа HTTP X-XSS-Protection останавливает загрузку страниц при обнаружении XSS атаки.
Например, от этого в адресной строке — http://www.site.com/page.php?var=<script>alert(‘xss’);</script>
Читаем статью
Заголовок HTTP X-Content-Type-Options
HTTP-заголовок ответа X-Content-Type-Options является маркером, используемым сервером для указания того, что типы MIME, объявленные в заголовках Content-Type, должны соблюдаться и не изменяться. Это позволяет отказаться предотвратить подмену типов MIME.
Другими словами — при загрузке файла картинки на сервер злоумышленник пытается загрузить исполняемый скрип под названием picture.jpg
Инструкция в файле .htaccess
Header always set X-Content-Type-Options "nosniff"
Этот HTTP-заголовок был введен Microsoft в IE 8 как способ блокировать происходящий перехват содержимого преобразовывать неисполняемые типы MIME в исполняемые типы MIME. С тех пор другие браузеры внедрили его, даже если их алгоритмы обработки MIME были менее агрессивными.
Заголовок HTTP Referrer-Policy
Знание полного URL-адреса, с которого пришел посетитель, включая аргументы запроса, может раскрыть термины последнего поискового запроса или личные данные, такие как адрес электронной почты.
Инструкция в файле .htaccess
Header always set Referrer-Policy: "strict-origin-when-cross-origin"
Возможные значения:
- «no-referrer-when-downgrade» – это значение по умолчанию: Referer отправляется всегда, если только мы не отправим запрос из HTTPS в HTTP (из более безопасного протокола в менее безопасный).
- «no-referrer» – никогда не отправлять Referer.
- «origin» – отправлять в Referer только текущий источник, а не полный URL-адрес страницы, например, посылать только http://site.com вместо http://site.com/path.
- «origin-when-cross-origin» – отправлять полный Referer для запросов в пределах текущего источника, но для запросов на другой источник отправлять только сам источник (как выше).
- «same-origin» – отправлять полный Referer для запросов в пределах текущего источника, а для запросов на другой источник не отправлять его вообще.
- «strict-origin» – отправлять только значение источника, не отправлять Referer для HTTPS→HTTP запросов.
- «strict-origin-when-cross-origin» – для запросов в пределах текущего источника отправлять полный Referer, для запросов на другой источник отправлять только значение источника, в случае HTTPS→HTTP запросов не отправлять ничего.
- «unsafe-url» – всегда отправлять полный URL-адрес в Referer, даже при запросах HTTPS→HTTP.
Вот таблица со всеми комбинациями:
Значение | На тот же источник | На другой источник | HTTPS→HTTP |
---|---|---|---|
"no-referrer" | — | — | — |
"no-referrer-when-downgrade" или "" (по умолчанию) | full | full | — |
"origin" | origin | origin | origin |
"origin-when-cross-origin" | full | origin | origin |
"same-origin" | full | — | — |
"strict-origin" | origin | origin | — |
"strict-origin-when-cross-origin" | full | origin | — |
"unsafe-url" | full | full | full |
Можно выбрать несколько стратегий из доступных вариантов Referrer-Policy, но обычно — это “origin-when-cross-origin”, который включает Referer для всех нормальных запросов, но усекает значение только до домена, если ссылка идёт от одного домена к другому.
Ссылки в пределах вашего собственного сайта включают полный реферер.
Заголовок HTTP Permissions-Policy
Это заголовок безопасности, который определяет, какие функции браузер можно использовать на данном сайте.
Инструкция в файле .htaccess
Header always set Permissions-Policy "interest-cohort=(), geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()"
Заголовок HTTP Permissions-Policy заменяет существующий заголовок Feature-Policy для управления делегированием разрешений браузера.
Параметр interest-cohort=() запрещает браузеру использовать новую технологию Google FLoC для создания «цифрового» отпечатка пользователя.
Вот в этой статье подробнее
Отключение Google FloC на вашем веб-сайте
Заголовок HTTP Expect-CT
Цель этого заголовка — сообщить браузеру, что он должен выполнить дополнительные «фоновые проверки», чтобы убедиться, что сертификат является подлинным: когда сервер использует заголовок Expect-CT, он в основном запрашивает у клиента проверить, что используемые сертификаты находятся в открытых журналах сертификатов прозрачности (CT).
Инструкция в файле .htaccess
Header always set Expect-CT "max-age=7776000, enforce"
Параметры:
- включить проверку CT для текущего приложения на период max-age=777600 секунд (9 суток)
- enforce обеспечить соблюдение этой политики и запретить доступ к приложению в случае нарушения
- отправить отчет по указанному URL-адресу в случае нарушения (дополнительный параметр) — report-uri=»https://ct.example.com/report
Подпишитесь в VKontakte - нажмите кнопку | ||
Подпишитесь в Telegram - нажмите кнопку | ||
Наша группа ODNOKLASSNIKI |
Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла
Запрос на размещение Вашего рекламного поста (тема и email будут добавлены автоматически в письмо)
В Вашем браузере должна быть настроена обработка ссылок mailto
site_post@bk.ru
или просто скопируйте адрес e-mail
Почитать в разделе
БЕЗОПАСНОСТЬ САЙТА

(Читать полностью...)
- Всего статей в разделе: 8
- Показано статей в списке: 5
- Сортировка: название по алфавиту
Защищаем форму обратной связи от ботов

(Читать полностью...)
Как включить HTTPS на сайте?

(Читать полностью...)
Как проверить сайт на вирусы?

(Читать полностью...)
Настраиваем fail2ban под свои задачи

(Читать полностью...)
Установка fail2ban на Linux

(Читать полностью...)