В тестах на проникновение в систему безопасности, которые нам всем приходится проходить (к сожалению, не без оснований), часто встречается такая проблема, как отсутствие или непоследовательность в предоставлении HTTP-заголовка X-Content-Type-Options в ответах веб-сервера. Это может быть раздражающим фактором, но чем безопаснее наш сайт и его посетители, тем лучше.
Чем полезен этот заголовок? Все просто: в Chrome и Internet Explorer есть так называемая функция “MIME-Sniffing”, которая включена по умолчанию и определяет тип содержимого, найденного в ответе веб-сервера. Это используется для лучшего отображения веб-страницы, даже если веб-сервер что-то напутал, или страница плохо написана и указала неверный тип содержимого.
Например, сайт может отправить ответ, в котором будет указано, что содержимое сайта — это текст, через заголовок Content-Type со значением text/plain. Браузер определит, что на самом деле это PDF, и отобразит его правильно. В противном случае он может попытаться отобразить его как текст, что приведет к искаженной или нечитаемой странице. Для некоторых разработчиков браузеров такая красивая страница лучше, чем соблюдение стандартов.
Звучит не так уж плохо? Что ж, любое программное обеспечение, которое Вы используете в своем браузере для предотвращения загрузки, отображения или выполнения определенных типов содержимого, потенциально может быть обойдено с помощью этой функции. Есть множество причин, по которым мы можем захотеть заблокировать исполняемые файлы, zip-файлы, файлы Word и т.п. В Windows все еще можно “завладеть” компьютером с помощью всего лишь GIF-изображения.
Любое программное обеспечение, которое мы используем для защиты от таких угроз путем блокирования этого содержимого, может только проверить значение заголовка Content-Type и действовать соответствующим образом, основываясь на его значении. Браузер, делающий что-то совсем не то, что можно было бы ожидать, не помогает и представляет собой риск.
Прелесть использования балансировщика нагрузки заключается в том, что нам нужно сделать это только в одном месте, чтобы развернуть на всех наших серверах. Нам не нужно полагаться на разработчиков или перенастраивать Apache. На балансировщик нагрузки edgeNEXUS мы просто импортируем шаблон конфигурации jetPACK и назначаем правило трафика flightPATH для той виртуальной службы (служб), которую мы хотим защитить.
Правило добавляет заголовок только в том случае, если его нет, поэтому оно будет работать даже там, где наши веб-серверы уже вставляют его или вставляют только для определенных страниц. Это правило должно стать частью Вашей стандартной конфигурации виртуальных служб — Вы ничего не потеряете, каким бы ни был сайт, хотя, конечно, всегда рекомендуется тестирование. Вы можете скачать jetPACK на сайте edgeNEXUS Github здесь.
Это одно из многих разработанных нами правил flightPATH, которые Вы можете применить для повышения безопасности Вашего сайта и его пользователей. Чтобы узнать больше о HTTP-заголовках, связанных с безопасностью, ознакомьтесь с этими статьями:
- Заголовок безопасности HTTP для борьбы с “Clickjacking” — Как повысить безопасность Вашего сайта с помощью заголовка X-Frame Options
- Как защитить HTTP-трафик и обезопасить пользователей с помощью заголовка HTTP Strict Transport Security Header
Прелесть использования балансировщика нагрузки заключается в том, что нам нужно сделать это только в одном месте, чтобы развернуть на всех наших серверах. Нам не нужно полагаться на разработчиков или перенастраивать Apache.