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 и другие. Если хочешь поглубже — есть ещё куча хитрых заголовков, но эти — базовый минимум, без которого не стоит выходить в онлайн.
0 комментариев