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

Вот список минимумов, которые надо ввалить в ответ сервера, чтобы не кормить хакеров:

Content-Security-Policy (CSP)

Говорит браузеру: «Загружай ресурсы только с моих серверов и доверенных мест, иначе — отказать».

Почему: Не даёт запускать на странице левые скрипты и защищает от XSS — классика жанра.

Пример:

Content-Security-Policy: default-src 'self' https://example.com; 

Грубо говоря: «Загружай скрипты, картинки и что там ещё, только с моего сайта и example.com».

X-XSS-Protection

Включает встроенный в браузер щит от XSS-атак. Если браузер заметит подозрительный скрипт — он его заблокирует.

Пример:

X-XSS-Protection: 1; mode=block; 

Почти как сказать браузеру «Слушай, если увидишь вреднючий код — сразу режь».

Примечание: современные браузеры уже часто игнорируют этот заголовок, но он не помешает.

X-Frame-Options

Защищает от фишинга и Clickjacking — когда твой сайт вставляют в iframe на чужом ресурсе, чтобы заставить юзера нажать куда не надо.

Пример:

X-Frame-Options: DENY 

Это значит: «Ни один сайт не вставит мою страницу в iframe». Можно ещё SAMEORIGIN — разрешить только своему домену.

Strict-Transport-Security (HSTS)

Заставляет браузер общаться с твоим сайтом только через HTTPS. Это основа защиты от MITM-атак (когда кто-то пытается подслушать или изменить трафик).

Пример:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload 

То есть браузер на год забудет, что есть HTTP, и будет лупить только HTTPS.

X-Content-Type-Options

Запрещает браузеру гадать с MIME-типами. Если ты отправил файл с типом, браузер не должен пытаться угадать или подставить свой, чтобы не пропустить вредоносный файл.

Пример:

X-Content-Type-Options: nosniff

Просто и эффективно.

Итог

Без этих заголовков твой сайт — как двери без замка. Добавь их, чтобы свести к минимуму классические атаки: XSS, Clickjacking, MITM и другие. Если хочешь поглубже — есть ещё куча хитрых заголовков, но эти — базовый минимум, без которого не стоит выходить в онлайн.