Топ-10 уязвимостей на сайтах: чему нас научило сканирование тысячи проектов
Вы можете не верить в уязвимости — но это не мешает им существовать.
Когда мы запустили масштабное сканирование более тысячи сайтов (от лендингов и блогов до интернет-магазинов), результат оказался тревожным: ни один сайт не прошёл проверку без замечаний.
Самое удивительное — большинство ошибок не требуют “хакерского” ума. Это банальные вещи, о которых разработчики знают, но не делают «потому что и так работает».
Что показывают цифры
- 92% сайтов не используют Content-Security-Policy (CSP).
Это как оставить в квартире дверь открытой и надеяться, что вор не зайдёт.
CSP задаёт белый список источников, откуда можно загружать скрипты. Без него внедрить вредоносный JavaScript — проще простого. -
88% не включают Strict-Transport-Security (HSTS).
Этот заголовок заставляет браузер использовать HTTPS даже при ошибках ввода. Без него пользователи могут оказаться на фальшивой копии сайта. -
67% сайтов передают cookies без флага Secure.
В открытой Wi-Fi сети такие cookies можно перехватить и авторизоваться под вашим логином. -
62% не задают
Referrer-Policy.
Это значит, что каждый переход на другой сайт раскрывает URL с параметрами. Иногда — включая токены и e-mail. -
Половина сайтов не используют X-Frame-Options и Cross-Origin-Policies.
А это защита от clickjacking и кражи данных между доменами.
Пример из практики
Во время аудита мы нашли корпоративный сайт, где можно было вставить iframe с подменённой кнопкой «Войти». Пользователь думал, что логинится в свою систему, а на деле отправлял пароль злоумышленнику. Один заголовок — X-Frame-Options: DENY — мог бы полностью предотвратить атаку. Добавить его занимает 10 секунд.
Как исправить
Минимальный набор, который должен быть у любого сайта:
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header set X-Frame-Options "DENY"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Content-Security-Policy "default-src 'self';"
Добавьте это в конфигурацию сервера или .htaccess, и уже сегодня ваша защита станет в 10 раз крепче.
Вывод
Проблема не в том, что сайты взламывают. Проблема в том, что им никто не мешает.
Современная веб-безопасность — это не про антивирус, а про дисциплину.
И если бы каждый сайт внедрил хотя бы пять базовых заголовков, число успешных атак снизилось бы в разы.
Безопасность — это не продукт, а привычка.
Пора её выработать.