Веб-приложения — это не просто набор страниц в браузере. За каждой кнопкой, формой и анимацией скрывается сложная система: клиентская часть (frontend), серверная часть (backend), базы данных, API, фреймворки и множество сервисов. И чем сложнее система, тем больше мест, где может прятаться уязвимость.
Разберём, из чего состоит веб-приложение, как оно работает и какие ошибки допускают разработчики, создавая лазейки для атак.
Как работает веб-приложение
Когда вы нажимаете кнопку на сайте, запускается цепочка действий:
-
Браузер (клиент) отправляет запрос на сервер.
-
Сервер (backend) обрабатывает запрос: обращается к базе данных, выполняет логику приложения.
-
База данных возвращает информацию.
-
Сервер формирует ответ и отправляет его клиенту.
-
Браузер отображает результат.
На каждом этапе есть риск уязвимости — от неправильной валидации данных на клиенте до небезопасных запросов к базе.
Frontend vs Backend: что видно, а что скрыто
-
Frontend — HTML, CSS, JavaScript. То, что видит и с чем взаимодействует пользователь.
-
Backend — код на сервере, который выполняет бизнес-логику и управляет данными.
📌 Уязвимости часто возникают на стороне клиента из-за избыточной информации в коде, ошибок в скриптах или неправильной настройки доступа к данным.
HTML, CSS и JavaScript глазами специалиста по безопасности
-
HTML — каркас сайта. Иногда в нём можно найти скрытые комментарии или тестовые блоки, которые раскрывают внутреннюю информацию.
-
CSS — отвечает за внешний вид, но может “выдать” скрытые элементы или структуру страниц.
-
JavaScript — добавляет интерактивность, но при неправильной обработке данных становится источником XSS и других атак.
Как сайты случайно раскрывают свои секреты
-
Отладочные сообщения в коде.
-
Неиспользуемые, но доступные по ссылке страницы.
-
Открытые конфигурационные файлы.
-
Публичные API без авторизации.
HTML-инъекции и XSS: ошибки, которые любят хакеры
-
HTML-инъекция — внедрение своего HTML-кода в страницу. Может использоваться для фишинга или искажения контента.
-
XSS (Cross-Site Scripting) — внедрение JavaScript-кода, который будет выполнен в браузере жертвы. Через XSS крадут cookies, подделывают действия пользователя и атакуют других пользователей сайта.
CSRF: атака по доверенности
CSRF (Cross-Site Request Forgery) заставляет пользователя выполнять действия на сайте без его ведома — например, отправить перевод денег или изменить пароль. Часто срабатывает из-за отсутствия токенов защиты и проверки источника запроса.
Серверы, базы и API: уязвимости “под капотом”
-
Незащищённые серверы — открытые порты, стандартные пароли, устаревшее ПО.
-
Базы данных — утечки из-за плохих запросов, слабых прав доступа и отсутствия шифрования.
-
API — неправильная авторизация, доступ к методам, которые не предназначены для публичного использования.
Почему известные уязвимости живут годами
Даже когда ошибка задокументирована, она может оставаться не исправленной годами из-за:
-
Отсутствия ответственного за безопасность.
-
Страха “сломать” существующую систему при обновлении.
-
Недооценки серьёзности проблемы.
Как тренировать навыки поиска уязвимостей
Эффективнее всего учиться на практике:
-
Анализировать HTML, CSS, JavaScript реальных сайтов.
-
Проверять API на доступ к закрытым методам.
-
Искать XSS и HTML-инъекции в тестовых средах.
-
Исследовать настройки серверов и баз данных.
Хотите научиться находить и закрывать уязвимости на реальных примерах?
В модуле «Веб-приложения: с чего всё начинается» вы пройдёте весь путь — от разбора архитектуры сайта до практических атак и защиты на стендах. После него вы будете смотреть на любой сайт глазами исследователя, а не просто пользователя.
📘 Понравилась статья?
Больше практики и реальных заданий — в Kraken Academy.
А чтобы точно ничего не пропустить — подпишись на наш Telegram-канал.