✖️ 3 дыры безопасности в своём боте Коллеги, handleChannelRemove, handlePostView, handlePostCancel. Ни одна функция не проверяла, чей это пост.
3 дыры безопасности. Чужие данные видны всем. Нашёл сам.
📍Что было сломано
- Удаление канала: любой мог удалить чужой
- Просмотр постов: статистика чужих каналов
- Отмена постинга: остановка чужих кампаний
Всё из-за отсутствия проверки userId в запросах к базе.
📍Как обнаружил Code review с AI на предмет мультитенантности: "Проверь все функции на изоляцию данных между пользователями"
AI нашёл 7 подозрительных мест. Из них 3 критичных: доступ к чужим данным без ограничений.
📍Исправление Добавил middleware для проверки владельца:
if (channel.userId !== req.user.id) {
return res.status(403).json({error: 'Forbidden'});
}
Плюс unit-тесты на попытки доступа к чужим ресурсам.
📍Последствия Без этой проверки любой пользователь мог:
- Видеть статистику чужих каналов
- Удалять чужие настройки
- Останавливать чужой автопостинг
Одна строчка кода, которая стоит всего бизнеса.
📍Профилактика Теперь каждая новая функция проходит чеклист:
- Проверка прав доступа
- Валидация входных данных
- Тест на межпользовательскую изоляцию
- Code review на security
Как настроил мониторинг безопасности для всех проектов. Чеклист security review в бесплатном гиде.
#моикейсы_поповвии Работаем дальше.