В прошлом посте про мотохаб я писал про MVP бота — кнопка SOS, помощь на дороге, единая база мотоциклистов Екатеринбурга. С тех пор прошло время, и вылезло то, чего на старте не было видно.
Первая проблема — флуд. Когда у тебя в боте есть кнопка экстренной помощи, на которую при нажатии прилетает уведомление всем активным участникам сообщества, найдётся человек который начнёт её тестировать. «А что будет если нажать?». «А ещё раз?». «А пять раз подряд?». В первый день после запуска один пользователь нажал SOS восемь раз за минуту — просто проверял, действительно ли работает. Восемь раз весь чат получил уведомление о ложной тревоге.
Поставил защиту: один SOS на пользователя в десять минут. Если в эти десять минут жмёт ещё раз — бот тихо игнорирует, человеку показывает «ты уже отправил, ждём подтверждения». Это убрало 95% мусора. Реальный SOS отправляется один раз, и человеку не до того чтобы спамить.
Вторая проблема — боты-самозванцы. Кто-то с непонятными целями начал создавать аккаунты, вступать в бота, и я не понимал зачем. Не присылал SOS, не общался, просто висел в базе. На всякий случай добавил верификацию: чтобы получать алерты сообщества, нужно один раз подтвердить телефон через стандартную функцию телеграма. Кто не подтвердил — остаётся в боте, видит общую информацию, но в чувствительные рассылки не попадает. Это отрезало почти всех непонятных.
Третья доработка не про безопасность, а про охват — мультимессенджерность. Часть аудитории мотохаба сидит не только в Telegram, но и в MAX (российский мессенджер, который растёт последний год). Поэтому того же самого бота развернули в MAX. Логика одинаковая: SOS, помощь, общая база. Хитрость в том, что один и тот же мотоциклист может писать SOS либо через Telegram, либо через MAX — а на стороне сервера это видится как один человек. Привязка через номер телефона: один номер — один профиль, не два.
Главный урок, который я вынес из этих доработок, простой. Безопасность ботов начинается не с шифрования и не с защиты от взлома. Она начинается с защиты от обычного человека, который тыкает в кнопку много раз подряд. 95% всех проблем продакшна — это не атаки хакеров, это обычные люди в нестандартных сценариях. Если вы заранее подумали как ведёт себя бот когда пользователь жмёт кнопку 50 раз — у вас уже устойчивый продукт.
