Если вы задумались о безопасности вашего веб-сайта или портала, то обязательно необходимо рассмотреть вопрос HTTP-заголовков (headers) которые отдаёт ваш веб-сервер
HTTP-заголовки обеспечивают дополнительный уровень безопасности, который помогает смягчить несколько атак и уязвимостей, включая SQL-инъекции, XSS, clickjacking и т.д.
Заголовки содержат некий набор данных, таких как Cache-Control, Content-Encoding, коды состояния и т.д.
Собранная информация из заголовков может помочь вам описать коммуникацию и, следовательно, улучшить безопасность вашего сайта
Content Security Policy (CSP)
Content Security Policy (CSP) — это дополнительный уровень безопасности, позволяющий распознавать и устранять определённые типы атак, таких как Cross Site Scripting (XSS (en-US)) и атаки внедрения данных. Спектр применения этих атак включает, но не ограничивается кражей данных, подменой страниц и распространением зловредного ПО.
Strict-Transport-Security
HTTP Strict-Transport-Security — заголовок ответа (часто используется аббревиатура HSTS (en-US)), позволяющий web-сайтам уведомить браузер о том, что доступ к ним должен быть осуществлён только посредством HTTPS вместо HTTP.
X-Content-Type-Options
HTTP-заголовок ответа X-Content-Type-Options является маркером, используемым сервером для указания того, что типы MIME, объявленные в заголовках Content-Type, должны соблюдаться и не изменяться. Это позволяет отказаться от перехвата MIME, или, другими словами, это способ сказать, что веб-мастера знали, что они делают.
Cache-Control
Общий заголовок Cache-Control используется для задания инструкций кеширования как для запросов, так и для ответов. Инструкции кеширования однонаправленные: заданная инструкция в запросе не подразумевает, что такая же инструкция будет указана в ответе
Access-Control-Allow-Origin
Заголовок ответа Access-Control-Allow-Origin показывает, может ли ответ сервера быть доступен коду, отправляющему запрос с данного источника origin.
X-XSS-Protection
Заголовок ответа HTTP X-XSS-Protection это особенность Internet Explorer, Chrome и Safari, которая останавливает загрузку страниц при обнаружении (XSS (en-US)) атаки. Хотя эти меры защиты не требуются в большинстве случаев для современных браузеров, когда сайты внедряют сильную политику безопасности контента Content-Security-Policy (en-US), которая отключает использование встроенного JavaScript (‘unsafe-inline’), они могут обеспечить защиту для пользователей, использующих устаревшие версии браузеров, не поддерживающих CSP.
Пример кода для Nginx
Для сайта с SSL, http 2.0. Always — применять принудительно
server {
listen 443 ssl http2;
...
add_header Host-Provider 'Jettochkin https://milordk.ru' always;
add_header Strict-Transport-Security 'max-age=7776000; includeSubdomains; preload;' always;
add_header X-Frame-Options SAMEORIGIN always;
add_header X-Content-Type-Options nosniff always;
add_header X-XSS-Protection '1; mode=block' always;
add_header Permissions-Policy "accelerometer=(), autoplay=(), camera=(), encrypted-media=(), fullscreen=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), sync-xhr=(), usb=()" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Access-Control-Allow-Origin *;
add_header Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval' *.vk.com * *.google.net *.google.com *.googletagmanager.com *.gstatic.com *.milordk.ru *.yastatic.net *.yandex.ru;" always;
...
HTTP