По
| Последнее обновление: https://geekflare.com/http-header-implementation/Знаете ли вы, что большинство уязвимостей безопасности можно устранить, внедряя необходимые заголовки в заголовке ответа?
Безопасность так же важна, как контент и SEO вашего сайта, а тысячи веб-сайтов взломаны из-за неправильной конфигурации или отсутствия защиты.
Если вы являетесь владельцем веб-сайта или инженером по безопасности и хотите защитить свой сайт от Clickjacking, инъекций кода, типов MIME, XSS и т. Д., То это руководство поможет вам.
В этой статье я расскажу о различных заголовках HTTP для реализации на нескольких веб-серверах, сетевом крае и поставщике CDN для лучшей защиты веб-сайта .
Заметки:
- Перед внесением изменений рекомендуется сделать резервную копию файла конфигурации
- Некоторые заголовки могут не поддерживаться во всех браузерах, поэтому проверьте совместимость перед реализацией.
- Mod_headers должны быть включены в Apache для реализации этих заголовков. Убедитесь, что следующая строка не представлена в файле httpd.conf.
- Модули headers_module LoadModule / mod_headers.so
Если вы используете SUCURI Cloud WAF , вам не придется беспокоиться о том, чтобы добавить их вручную на свой веб-сервер, поскольку большинство из них автоматически включены.
Список заголовков HTTP
X-XSS-Protection
Заголовок X-XSS-Protection может предотвратить некоторые атаки XSS(межсайтовые скрипты), и это совместимо с IE 8+, Chrome, Opera, Safari и Android.
Google, Facebook, Github используют этот заголовок, и большинство консультантов по тестированию на проникновение попросят вас реализовать это.
Существует четыре возможных способа настройки этого заголовка.
Значение параметра | Имея в виду |
0 | Фильтр XSS отключен |
1 | Фильтр XSS включен и дезинфицирует страницу, если обнаружена атака |
1;mode=block | Фильтр XSS включен и предотвращает отображение страницы, если обнаружена атака |
1;report=http://example.com/report_URI | Фильтр XSS включен и сообщил о нарушении, если обнаружена атака |
Давайте реализуем 1; mode = block на следующих веб-серверах.
HTTP-сервер Apache
Добавьте следующую запись в httpd.conf вашего веб-сервера apache
Header set X-XSS-Protection "1; mode=block"
Перезапустите apache для проверки
Nginx
Добавьте в nginx.conf следующую строку http
add_header X-XSS-Protection "1; mode=block";
Перезапуск Nginx необходим, чтобы это отразилось на заголовке ответа на веб-страницу.
MaxCDN
Если вы используете MaxCDN, то добавление заголовка легко и доступно «на лету».
Перейдите в Edge Rules >> нажмите «Новое правило» и выберите «Добавить X-XSS-Protection Header» из раскрывающегося списка.
Microsoft IIS
- Открыть диспетчер IIS
- Выберите сайт, для которого необходимо включить заголовок для
- Перейдите в раздел «Заголовки ответов HTTP».
- Нажмите «Добавить» в действии
- Введите имя, значение и нажмите «ОК».
- Перезапустите IIS, чтобы увидеть результаты
Строгая транспортная безопасность HTTP
Заголовок HSTS (HTTP Strict Transport Security) обеспечивает передачу всех сообщений из браузера через HTTPS (HTTP Secure). Это предотвращает запросы HTTPS по подсказкам и перенаправляет HTTP-запросы на HTTPS.
Перед внедрением этого заголовка вы должны обеспечить доступ ко всей странице вашего сайта через HTTPS, иначе они будут заблокированы.
Заголовок HSTS поддерживается во всех основных версиях браузера, таких как IE, Firefox, Opera, Safari и Chrome. Существует три конфигурации параметров.
Значение параметра | Имея в виду |
max-age | Продолжительность (в секундах), чтобы сообщить браузеру, что запросы доступны только через HTTPS. |
IncludeSubdomains | Конфигурация действительна и для субдомена. |
preload | Используйте, если вы хотите, чтобы ваш домен был включен в список предварительной загрузки HSTS |
Итак, давайте рассмотрим пример настройки HSTS на один год, включая предварительную загрузку для домена и поддомена .
HTTP-сервер Apache
Вы можете реализовать HSTS в Apache, добавив следующую запись в файл httpd.conf
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Перезапустите apache, чтобы увидеть результаты
Nginx
Чтобы настроить HSTS в Nginx, добавьте следующую запись в nginx.conf в соответствии с директивой server (ssl)
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
Как обычно, вам нужно перезапустить Nginx для проверки
Вспышка облака
Если вы используете Cloud Flare, вы можете включить HSTS всего за несколько кликов.
- Войдите в Cloud Flare и выберите сайт
- Перейдите на вкладку «Крипто» и нажмите «Включить HSTS».
Выберите настройки, которые вам нужны, и изменения будут применены «на лету».
Microsoft IIS
Запустите диспетчер IIS и добавьте заголовок, перейдя в «Заголовки ответов HTTP» для соответствующего сайта.
Перезапустить сайт
X-Frame-Options
Используйте заголовок X-Frame-Options, чтобы предотвратить уязвимость Clickjacking на вашем веб-сайте. Внедряя этот заголовок, вы указываете браузеру не внедрять вашу веб-страницу в frame / iframe. Это имеет некоторые ограничения в поддержке браузера, поэтому вы должны проверить перед его внедрением.
Вы можете настроить следующие три параметра.
Значение параметра | Имея в виду |
SAMEORIGIN | Frame / iframe содержимого разрешается только с одного и того же сайта. |
DENY | Предотвратите, чтобы любой домен вставлял ваш контент с помощью frame / iframe. |
ALLOW-FROM | Разрешить кадрирование содержимого только на конкретном URI. |
Давайте посмотрим, как реализовать « DENY », поэтому домен не вмещает веб-страницу.
Apache
Добавьте следующую строку в httpd.conf и перезапустите веб-сервер, чтобы проверить результаты.
Header always append X-Frame-Options DENY
Nginx
Добавьте в nginx.conf следующее в директиву / блоке сервера.
add_header X-Frame-Options «DENY»;
Перезагрузите, чтобы проверить результаты
F5 LTM
Создайте iRule со следующим и связанным с соответствующим виртуальным сервером.
когда HTTP_RESPONSE { HTTP :: header вставить «X-FRAME-OPTIONS» «DENY» }
Вам не нужно ничего перезапускать, изменения отражаются в воздухе.
WordPress
Вы можете получить этот заголовок, реализованный через WordPress. Добавьте в файл wp-config.php следующее:
header ('X-Frame-Options: DENY);
Если вам неудобно редактировать файл, вы можете использовать плагин, как описано здесь .
Microsoft IIS
Добавьте заголовок, перейдя в «Заголовки ответов HTTP» для соответствующего сайта.
Перезагрузите сайт, чтобы увидеть результаты.
X-Content-Type-Options
Предотвратите риск безопасности типов MIME , добавив этот заголовок к HTTP-ответу вашей веб-страницы. Наличие этого заголовка указывает браузеру рассматривать типы файлов, как определено, и запрещать обнюхивание содержимого. Есть только один параметр, который вы должны добавить «nosniff».
Давайте посмотрим, как рекламировать этот заголовок.
Apache
Вы можете сделать это, добавив следующую строку в файл httpd.conf
Header set X-Content-Type-Options nosniff
Не забудьте перезапустить веб-сервер Apache, чтобы получить конфигурацию.
Nginx
Добавьте в файл nginx.conf следующую строку в блоке сервера.
add_header X-Content-Type-Options nosniff;
Как обычно, вам нужно перезапустить Nginx, чтобы проверить результаты.
WordPress
Если вы используете WordPress, вы можете использовать плагин Security Headers для реализации этого заголовка.
Microsoft IIS
Откройте IIS и перейдите в заголовки HTTP-ответов
Нажмите «Добавить» и введите имя и значение
Нажмите «ОК» и перезапустите IIS, чтобы проверить результаты.
Закрепление открытого ключа HTTP
Минимизируйте риск нападений «человек в середине» ( MITM ), присвоив сертификат. Это возможно с помощью заголовка HPKP (HTTP Public Key Pinning).
Вы можете связать открытый ключ корневого сертификата или немедленный сертификат. На момент написания документа HPKP в настоящее время работает в Firefox и Chrome и поддерживает алгоритм хэширования SHA-256 .
Возможны четыре конфигурации параметров.
Значение параметра | Имея в виду |
report-uri=”url” | Сообщайте об указанном URL-адресе, если проверка PIN-кода не удалась. Это необязательно. |
pin-sha256=”sha256key” | Укажите контакты здесь |
max-age= | Браузер запоминает время в секундах, когда сайт доступен только с помощью одного из закрепленных ключей. |
IncludeSubdomains | Это применимо и для субдомена. |
Давайте посмотрим пример заголовка HPKP на facebook.com
public-key-pins-report-only:max-age=500; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="r/mIkG3eEpVdm+u/ko/cwxzOMo1bk4TyHIlByibiA5E="; pin-sha256="q4PO2G2cbkZhZ82+JgmRUyGMoAeozA+BSXVXQWB8XWQ="; report-uri=http://reports.fb.com/hpkp/
Если это то, что вам нужно реализовать на вашем веб-сайте, перейдите к руководству по внедрению, написанному Скоттом Хелме .
Политика безопасности контента
Предотвратите XSS, clickjacking, атаки на инъекции кода , используя заголовок политики безопасности контента (CSP) в ответе HTTP вашей веб-страницы. CSP инструктирует браузер загружать разрешенный контент для загрузки на веб-сайт.
Все браузеры не поддерживают CSP , поэтому вам нужно проверить его перед его внедрением. Существует три способа реализации заголовков CSP.
- Content-Security-Policy - Уровень 2 / 1.0
- X-Content-Security-Policy - Устаревший
- X-Webkit-CSP - Устаревший
Если вы все еще используете устаревший вариант, вы можете перейти к обновлению до последнего.
Для реализации CSP существует несколько параметров, и вы можете ссылаться на OWASP для идеи. Однако давайте рассмотрим два наиболее используемых параметра.
Значение параметра | Имея в виду |
по умолчанию-Src | Загрузите все из определенного источника |
скрипт-Src | Загружать только скрипты из определенного источника |
Следующий пример, чтобы загрузить все из одного источника на разных веб-серверах.
Apache
Получите следующее добавленное в файле httpd.conf и перезапустите веб-сервер, чтобы получить эффективность.
Header set Content-Security-Policy "default-src 'self';"
Nginx
Добавьте в серверный блок следующее: nginx.conf
add_header Content-Security-Policy "default-src 'self';";
Microsoft IIS
Перейдите в заголовки HTTP-ответов для вашего соответствующего сайта в диспетчере IIS и добавьте следующие
Надеюсь, что инструкции по настройке заголовков помогут сделать ваше веб-приложение безопасным и безопасным . Если вы хотите защитить веб-сервер IIS, вы также можете рассмотреть WebKnight WAF, где вы можете сконфигурировать выше всех и более того.