Найти тему

Защищаем сайт от хакеров при помощи HTTP-заголовков

Оглавление

Многие мои знакомые заказывали свои сайты у «фрилансеров» или в «веб-студиях», результат был разным, но кое-что общее мне запомнилось. Во всех этих сайтов никто не уделял внимания информационной безопасности.

Перед тем как продолжить чтение статьи, попробуйте проверить свой сайт или сайты знакомых при помощи двух очень полезных сервисов https://www.ssllabs.com/ssltest/ (проверяет сертификат и настройки сервера) https://securityheaders.com/ (проверяет заголовки).

Уверен, результат вас удивит;-)

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

Поверьте, они помогут защитить вас и ваших клиентов.

Ниже список HTTP-заголовков, которые должны быть прописаны у вашего сайта:

  • X-Frame-Options – защита от атак типа clickjacking (англ. «захват клика»). Наверное одна из самых распространенных атак, в свое время её эксплуатировали на Facebook. При помощи этой атаки можно кликнуть по сайту-жертве от имени посетителя; Полноценное описание этой атики и отличные примеры можно посмотреть здесь.
  • X-Content-Type-Options – предотвращает атаки с использованием подмены MIME типов. Подробнее о заголовке можно почитать на сайте https://developer.mozilla.org;
  • Referrer-Policy – помогает предотвратить утечку данных на сайты, куда идут ссылки. Оригинальное описание заголовка на сайте www.w3.org;
  • Content-Security-Policy – заголовок CSP позволяет указать список разрешённых источников, с которых можно загружать ресурсы. Можно указать браузеру не исполнять inline-скрипты и загружать файлы только с одного домена. Подробное описание заголовка https://developer.mozilla.org;
  • Feature-Policy – позволяет веб-разработчикам выборочно включать, отключать и изменять поведение определенных API и веб-функций в браузере. Это похоже на CSP, но вместо контроля безопасности он контролирует функции. Описание заголовка Feature-Policy на официальном сайте;
  • Strict-Transport-Security – запрещает посещать сайт по протоколу HTTP.
  • X-XSS-Protection – особенность Internet Explorer, Chrome и Safari, которая останавливает загрузку страниц при обнаружении XSS-атаки (для новых браузеров не требуется);
  • Удалить все лишние заголовки с сервера;-) что бы не упрощать жизнь мошенникам.

Настроить заголовки можно на сервере приложений, например на nginx, IIS, Apache и т.д. или в программном коде вашего приложения.

Просмотр заголовков сайта

Посмотреть имеющиеся заголовки можно при помощи утилиты CURL (официальный сайт: https://curl.haxx.se/), для этого в командной строке напишите:

>> curl -I https://your_site.ru

Результат должен выглядеть примерно так:

Пример выполнения команды curl
Пример выполнения команды curl

Инструкция по настройке для ASP.NET Core (C#)

  1. Редактируем файл Startup.cs, функция void Configure(IApplicationBuilder app, IHostingEnvironment env)
-3

Редактируем файл Startup.cs, функция void ConfigureServices (IServiceCollection services)

-4

Редактируем файл Program.cs, функция IWebHostBuilder CreateWebHostBuilder(string[] args)

-5

P.S.:

Для тех пользуется утилитой CURL или планирует начать её использовать, будет полезна моя статья Утилита CURL - форматирование вывода JSON-ответов.