Безопасность бота
Бот — это автоматический пользователь с токеном. Если токен утёк — кто угодно может писать, удалять, банить от его имени. Несколько простых правил защитят вас.
🔑 Токен — это пароль
Токен бота выглядит как 1234567890:AbCdEf.... Это полный доступ к боту. Кто угодно с токеном:
- Пишет от имени бота
- Удаляет/банит участников там где бот админ
- Читает все сообщения которые бот видит
- Получает webhook-уведомления (если настроены)
Никогда:
- ❌ Не кладите токен в публичный git репозиторий
- ❌ Не отправляйте токен в чаты, скриншоты или почту
- ❌ Не давайте токен незнакомым «помощникам по настройке»
Правильно:
- ✅ Храните в
.envфайле, добавленном в.gitignore - ✅ Используйте secret manager (Vault, Doppler, GitHub Secrets)
- ✅ На сервере — только в переменной окружения
- ✅ В Docker — через
--env-fileили secrets
Если токен утёк
- Откройте Профиль → Мои боты → выбранный бот.
- «Сбросить токен» — сразу.
- Старый токен немедленно перестаёт работать.
- Подмените новый токен в коде и перезапустите бота.
- Проверьте логи бота за период утечки — не сделал ли кто-то лишнего.
Сервис GitGuardian автоматически сканирует публичные репозитории GitHub на токены. Если ваш утёк туда — придёт письмо. Telefon делает то же самое: при первом запросе с скомпрометированного токена он автоматически сбрасывается, вам приходит уведомление.
🛡 Не делайте бота админом без необходимости
Каждое право — это потенциальный ущерб если бот взломан. Дайте минимально нужные права:
| Что бот делает | Какие права давать |
|---|---|
| Отвечает на команды | Никаких — обычный участник |
| Шлёт уведомления | Никаких |
| Постит в канал | Только «Публиковать посты» |
| Модерирует группу | Удалять сообщения, банить |
| Полный контроль | Только если вы автор и абсолютно доверяете коду |
Не давайте право «Назначать админов» — это позволяет боту повышать кого угодно (включая злоумышленника).
🤖 Не запускайте чужих ботов как админов
Если в интернете советуют «добавь нашего бота админом для крутых функций»:
- Прочитайте отзывы про этого бота
- Зайдите на профиль автора — есть ли его контакты, репутация
- Проверьте код (если open-source)
- Дайте минимум прав для теста
Лучше потерять 5 минут на проверку чем неделю восстанавливать заминированный канал.
🔒 Настройте «Кто может писать боту»
Если бот только для вашей команды — ограничьте доступ:
Настройки бота → «Кто может писать» → «Выбранные» → перечислите @username команды.
Так бот не отвечает случайным пользователям, экономит ваш бюджет на API/AI и не светится в публичных списках.
⚠ Опасные паттерны в коде бота
Если вы пишете бота сами — несколько частых уязвимостей:
Eval / выполнение чужого кода
# ❌ ОПАСНО
@dp.message()
async def calc(m):
result = eval(m.text) # юзер пришлёт os.system('rm -rf /')
await m.answer(str(result))
Используйте безопасный калькулятор (asteval, simpleeval).
Передача user_input в shell
# ❌ ОПАСНО
os.system(f"curl https://api.example.com/{m.text}")
# ✅ ПРАВИЛЬНО
subprocess.run(["curl", url], shell=False)
SQL-инъекция
# ❌ ОПАСНО
db.execute(f"SELECT * FROM users WHERE name='{m.text}'")
# ✅ ПРАВИЛЬНО (параметризованный запрос)
db.execute("SELECT * FROM users WHERE name=%s", (m.text,))
Открытый Mini App для всех
Если ваш Mini App имеет админ-функции — проверяйте подпись initData на бэкенде, не доверяйте параметрам из URL.
Подозрительные действия — куда жаловаться
Если бот рассылает спам, подделывается под официальный сервис, или украл данные:
- В Telefon: тап по @username бота → «Пожаловаться» → выбрать причину.
- На email:
abuse@telefon.chatс описанием и ссылками. - Команда модерации проверяет 24/7.
2FA на вашем аккаунте
Не забудьте включить двухфакторку на аккаунте Telefon (Настройки → Конфиденциальность → 2FA). Иначе если ваш аккаунт угонят — вместе с ним угонят и всех ваших ботов.