Почему твой любимый сайт небезопасен (и как это проверить самому)
Привет! Недавно мне написал друг: "Слушай, ты же в кибербезе, глянь мой любимый интернет-магазин - он безопасный?" Я зашёл, посмотрел и чуть не подавился травяным чаем. HTTP вместо HTTPS, SQL-инъекции в поиске, XSS прямо в комментариях. Я ему такой: "Бро, этот сайт защищён как картонная коробка от дождя".
Занимаюсь баг-хантингом уже несколько месяцев, нашёл уязвимости в куче российских сайтов -от онлайн-магазинов до банков. И знаешь, что я понял? 95% сайтов, которыми мы пользуемся каждый день, имеют проблемы с безопасностью. Не все критичные, но они есть.
Сегодня я покажу тебе, как самому проверить любой сайт на базовые косяки. Без Burp Suite, без программирования. Только браузер, глаза и немного здравого смысла. Поехали! 💻
Почему сайты небезопасны? (мой опыт)
За годы работы в кибербезопасности я вывел несколько закономерностей:
Разработчики думают о функционале, а не о безопасности
Я общался с десятками программистов. Их задача - сделать фичу, чтобы работала. "Безопасность потом добавим" - а потом не добавляют. Я находил SQL-инъекции в сайтах, которые работают по 5-7 лет. Просто никто не проверял.
Дедлайны убивают всё
"Надо запустить к Новому году!" - и запускают с дырами размером с ворота. Security audit? Дорого. Пентест? Некогда. Результат - сайт работает, но течёт как решето.
Устаревшие технологии везде
Я видел сайты на PHP 5.3 (2009 год!), забытые админки на /admin с паролем admin123, библиотеки с известными CVE. В 2025 году! Это наша печальная реальность.
Человеческий фактор
Разработчик оставил debug-режим на проде, забыл убрать тестовую страницу, захардкодил API-ключи в JavaScript. Я такое вижу каждую неделю, честное слово.
Понял картину? Теперь научу тебя проверять сайты самостоятельно. 💪
Базовые признаки небезопасного сайта
Начнём с того, что видно невооружённым глазом. Это красные флаги — увидел хоть один, будь настороже.
1. HTTP вместо HTTPS — главный грех
Первое, что я проверяю — адресная строка браузера.
Как я проверяю:
🔍 Открываю сайт
🔍 Смотрю на адресную строку
🔍 Должен быть замочек 🔒 и https://
Что это значит:
Если сайт на HTTP (без замочка):
- Твой пароль летит открытым текстом по сети
- Любой в кафе с Wireshark видит твои данные
- Твой провайдер видит всё, что ты делаешь
- MITM-атака делается за минуту
Где это критично:
❗ Интернет-магазины (данные карты!)
❗ Любые сайты с логином/паролем
❗ Формы с личными данными
❗ Банки и финансовые сервисы (хотя тут HTTP - это уже клиника)
Мой кейс:
Месяц назад проверял местный интернет-магазин электроники в Курске. Сайт полностью на HTTP! Форма оплаты — тоже HTTP! Я им написал в обратную связь. Ответили: "У нас всё работает нормально, жалоб не было". Я такой: "Ребят, вы отправляете данные карт незашифрованными!" Они: "Мы не храним данные карт, они идут сразу в банк". Я: "Но они идут через ОТКРЫТОЕ соединение!"
В итоге забил, но сам там ничего не покупаю. И тебе не советую на HTTP-сайтах что-либо вводить. 🚫
Лайфхак: Видишь HTTP в магазине - закрывай вкладку и ищи другой магазин. Это либо лохотрон, либо полная безответственность.
2. Подозрительные URL
Фишинг маскируется под легитимные сайты. Я сам чуть не повёлся пару раз.
Как я проверяю:
🔍 Внимательно читаю домен
🔍 vk.com ≠ vvk.com ≠ vk-security.ru🔍 sberbank.ru ≠ sber-online.com ≠ sberbank-enter.ru
Трюки, которые я видел:
- Замена символов:
о(кириллица) вместоo(латиница) - глазом не отличишь - Дефисы:
ya-ndex.ruвместоyandex.ru - Похожие домены:
gosuslugi.comвместоgosuslugi.ru - Хитрые поддомены:
vk.com.fake-site.ru(настоящий домен тутfake-site.ru!)
Реальная история:
Мне пришло SMS якобы от Сбера: "Подозрительная операция на 48,000₽. Подтвердите: sber-security-check.online/confirm". Я, как параноик, сразу заметил левый домен. Зашёл через VPN и виртуалку - идеальная копия сайта Сбера! Попросили ввести номер карты, CVV, код из СМС. Классический фишинг.
Я зарепортил домен, хостинг заблокировал через день. Но сколько людей успело повестись -тстрашно представить. 😰
3. Проблемы с сертификатом
Даже HTTPS может быть с косяками.
Как я проверяю:
🔍 Кликаю на замочек в адресной строке
🔍 Смотрю информацию о сертификате
🔍 Проверяю срок действия и кому выдан
Красные флаги:
🚩 Сертификат просрочен
🚩 Выдан другому домену
🚩 Самоподписанный (self-signed)
🚩 Браузер ругается и показывает предупреждение
Мой случай:
Зашёл на сайт местной IT-компании (ирония!). Хром выдал предупреждение: "Ваше подключение не защищено". Сертификат просрочен на 3 месяца! Я им написал. Ответ: "Спасибо, знаем, обновим на следующей неделе". Прошёл месяц — сертификат так и просрочен. Профессионализм, да. 🤦
Проверка своими руками (как я это делаю)
Теперь переходим к активным проверкам. Это первые шаги, которые я делаю, когда оцениваю сайт.
4. Смотрю HTTP-заголовки
Это как посмотреть на фундамент дома - сразу видно, крепкий он или нет.
Как я делаю:
🔍 Жму F12 (или правой кнопкой → "Исследовать")
🔍 Вкладка "Network" / "Сеть"
🔍 Обновляю страницу (F5)
🔍 Кликаю на первый запрос → "Headers" / "Заголовки"
На что я смотрю:
Ищу security headers:
✅ X-Frame-Options - защита от кликджекинга (должен быть!)
✅ X-Content-Type-Options: nosniff - защита от MIME-атак
✅ Strict-Transport-Security - принудительный HTTPS
✅ Content-Security-Policy - мощная защита от XSS
Нет ни одного? Я уже знаю, что сайт уязвим к базовым атакам.
Server header:
Вижу Server: Apache/2.2.15 или nginx/1.10.1? Это древние версии с кучей известных CVE. Нормальные админы их скрывают или обновляют.
Реальный пример:
Проверял сайт онлайн-школы программирования (не буду называть). Открыл Network - нет НИ ОДНОГО security header. Server: Apache/2.4.6 (это 2013 год, Карл!). Я подумал: "Учат программированию, а сами не могут настроить элементарную безопасность".
Написал им подробное письмо с рекомендациями. Молчали месяц, потом ответили: "Спасибо, передали техническим специалистам". Полгода прошло -ничего не изменилось. Проверял недавно - всё так же. 🤷
5. Проверяю формы на XSS
Формы - моя любимая точка входа. Тут чаще всего косячат.
Что я делаю:
🔍 Нахожу любую форму (поиск, комментарии, обратная связь)
🔍 Вставляю тестовый payload: <script>alert('TEST')</script>🔍 Отправля
ю🔍 Смотрю, что произойдёт
Важно: Это НЕ взлом! Это проверка безопасности. Я не краду данные, не ломаю функционал. Это как проверить, закрыта ли дверь - дёрнул ручку и понял.
Что может быть:
✅ Норм: Данные обработались, payload не выполнился (есть фильтрация)
⚠️ Так себе: Код показался как текст (санитизации нет, но есть экранирование)
🚨 Провал: Вылез алерт с "TEST" (уязвимость подтверждена!)
Мой кейс:
Проверял сайт местной администрации (область не скажу, чтоб не светить). Форма "Обращения граждан". Вставил <script>alert('XSS')</script> в поле "Текст обращения". Отправил.
Перешёл на страницу моего обращения (она доступна по прямой ссылке) — БАХ! Алерт выскочил! Это Stored XSS - я мог бы заxssить любого, кто откроет эту страницу. Даже админов, которые просматривают обращения.
Зарепортил через official channels. Пофиксили через 3 месяца. Награды не было (госструктура), но зато получил благодарственное письмо. Повесил на стену для прикола. 😄
6. Проверяю на SQL-инъекции
SQLi - это классика, которую до сих пор находят. Я нахожу регулярно.
Как я проверяю:
🔍 Нахожу параметр в URL: site.ru/catalog?id=5🔍 Добавляю одинарную кавычку: site.ru/catalog?id=5'🔍 Смотрю на ответ
Что ищу:
🚨 SQL ошибка в ответе: "MySQL Error", "Syntax error", "You have an error in your SQL syntax" - BINGO! Это SQLi!
⚠️ Страница сломалась: 500 ошибка, белый экран - возможно, уязвимость есть
✅ Всё ОК: 404 или игнорирование кавычки - защита работает
ВАЖНО: Я иду только до этого шага! Одна кавычка - это проверка. Если начать эксплуатировать (UNION SELECT, дампить базу) без разрешения - это уже статья 272 УК РФ. Не делай так!
7. Читаю исходный код страницы
Разработчики любят оставлять секреты в коде. Я их люблю находить.
Как я делаю:
🔍 Правая кнопка → "Просмотр кода страницы" (Ctrl+U)
🔍 Ctrl+F для поиска
🔍 Ищу ключевые слова:
api_keytokenpasswordsecretadminTODODEBUG
Что я нахожу:
- API-ключи прямо в JS-коде
- Закомментированные админские функции
- Внутренние URL и endpoints
- Информацию о версиях ПО
- Комментарии типа
// TODO: добавить проверку авторизации
Легендарный случай:
Сайт доставки еды (федеральная сеть, название не скажу). Открыл исходник страницы. Поиск по "api". Нашёл:
var YANDEX_MAPS_KEY = "секретный-ключ-123";
var PAYMENT_GATEWAY_SECRET = "prod-secret-key";
Это был боевой API-ключ от Яндекс.Карт с привязанной банковской картой компании! Плюс секрет от платёжного шлюза! Я мог накрутить им запросы на миллионы, но я не мудак.
Срочно написал в службу безопасности с severity: CRITICAL. Они удалили ключи из кода за 2 часа. Получил приглашение на закрытую программу.
Разработчика, который это закоммитил, наверное, уволили. Но это не моя вина - я спас им задницу. 🔥
8. Проверяю robots.txt
Этот файл - как карта сокровищ для хакера.
Как я делаю:
🔍 Открываю site.ru/robots.txt🔍 Ищу Disallow:🔍 Пробую зайти на запрещённые пути
Что часто нахожу:
User-agent: *
Disallow: /admin/
Disallow: /backup/
Disallow: /test/
Disallow: /api/v2/
Это как вывеска: "Тут у нас админка, не смотрите сюда!" Конечно я смотрю! 😎
Инструменты для ленивых (но я их тоже использую)
Если лень руками проверять, есть автоматические сканеры. Я их использую для первичной оценки.
9. Онлайн-сканеры
Mozilla Observatory (observatory.mozilla.org):
Я проверяю там все свои проекты. Вводишь URL - получаешь оценку от A+ до F и список рекомендаций.
Мой личный сайт получил B+. Добавил пару headers - стал A. Доволен как слон.
SecurityHeaders.com:
Быстрая проверка только HTTP-заголовков. Использую постоянно.
SSL Labs (ssllabs.com/ssltest):
Проверяет качество HTTPS-соединения. Оценка от A+ до F.
Проверял сайт одного банка (не Сбер) - получил B. У банка! Их TLS-конфигурация поддерживает устаревшие протоколы. Написал им - тишина. Ну окей, ваши проблемы. 🤷
10. Расширения для браузера
Я использую каждый день:
Wappalyzer:
Показывает технологии сайта (CMS, фреймворки, библиотеки). Помогает понять, с чем имею дело.
Cookie-Editor:
Смотрю на cookies - есть ли HttpOnly, Secure, SameSite флаги. Часто их нет.
Retire.js:
Сканирует JS-библиотеки на известные уязвимости. Находит кучу устаревших jQuery, Bootstrap и т.д.
Что делать, если нашёл уязвимость?
Окей, ты проверил сайт и нашёл баг. Что дальше?
Если это сайт с Bug Bounty программой:
✅ Зарепорть через платформу (HackerOne, Standoff, прямую программу)
✅ Опиши подробно: шаги, скрины, impact
✅ Жди ответа и выплаты
Если Bug Bounty программы нет:
✅ Найди контакт security team (security@site.ru, abuse@site.ru)
✅ Отправь подробное описание
✅ Дай им время на фикс (30-90 дней)
✅ Не публикуй детали до исправления
Чего НЕ делать:
❌ Не эксплуатируй уязвимость дальше проверки
❌ Не трогай чужие данные
❌ Не шантажируй ("заплатите или опубликую")
❌ Не хвастайся публично до фикса
Я всегда действую по responsible disclosure. Это профессионально и легально.
Заключение (мои мысли)
Я проверил сотни сайтов за свою карьеру. От мелких интернет-магазинов до федеральных порталов. И знаешь что? Проблемы везде. Абсолютно везде.
Но это не значит, что нужно паниковать и бояться интернета. Это значит, что нужно быть бдительным:
✅ Проверяй HTTPS перед вводом данных
✅ Смотри на URL внимательно
✅ Используй менеджер паролей и 2FA
✅ Не доверяй сайту только потому, что он "известный"
Я научил тебя базовым проверкам. Это 20% знаний, которые дадут 80% защиты. Если хочешь углубиться - изучай OWASP Top 10, проходи лабы на PortSwigger Academy, читай bug bounty write-ups.
А если найдёшь свою первую уязвимость - напиши мне, расскажу, как правильно зарепортить. Буду рад помочь. 🤝
Береги себя и свои данные. Интернет - это джунгли, но с правильными знаниями ты в них не потеряешься. 🔥
