Какие полезные HTTP-заголовки (headers) используются для безопасности и производительности?

«Какие полезные HTTP-заголовки (headers) используются для безопасности и производительности?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP-заголовки играют ключевую роль в безопасности, производительности и управлении контентом. Вот важные примеры:

Заголовки безопасности:

  1. Content-Security-Policy (CSP) Защищает от XSS-атак, указывая, какие источники контента (скрипты, стили) являются доверенными.

    Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com;
  2. Strict-Transport-Security (HSTS) Приказывает браузеру всегда использовать HTTPS для данного домена.

    Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  3. X-Frame-Options Защищает от атак clickjacking, запрещая встраивание страницы в <frame>, <iframe> или <object>.

    X-Frame-Options: DENY
  4. X-Content-Type-Options Отключает MIME-sniffing браузера, заставляя его следовать объявленному типу контента.

    X-Content-Type-Options: nosniff

Заголовки производительности и кеширования:

  1. Cache-Control Управляет кешированием в браузерах и промежуточных прокси.

    Cache-Control: public, max-age=3600, must-revalidate
  2. ETag / Last-Modified Используются для условных запросов и валидации кеша, что экономит трафик.

    ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
    Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT

Примечание: Заголовок X-XSS-Protection устарел и его использование не рекомендуется в современных браузерах. Вместо него следует полагаться на Content-Security-Policy.