Безопасность
Минимальные полномочия
Токен ограничен одним ботом, а chat_id проверяется на принадлежность этому боту. Бот не может читать произвольные комнаты или действовать от имени владельца.
Безопасный webhook
Допускается только HTTPS и публичные IP. Redirect не выполняется; loopback, link-local и private ranges блокируются для защиты от SSRF.
Валидация
Проверяйте подпись до JSON parsing, отклоняйте старые timestamp, ограничивайте размер тела и храните обработанные event id. Секреты держите в менеджере секретов.
Изоляция в группе
Не отправляйте боту фоновые сообщения группы. Ответ на callback, предназначенный одному пользователю, не должен раскрывать приватный результат остальным.
Практика с SDK
Разрешайте webhook только по HTTPS, проверяйте подпись до JSON parsing и ограничивайте максимальный размер тела на reverse proxy.
Не используйте bot token в PWA или мобильном клиенте. Все SDK предназначены для доверенной серверной среды.
Примеры использования
import { verifyWebhook } from '@keychat/bots';
// Keep rawBody unchanged: verifyWebhook checks timestamp, HMAC and freshness.
const event = verifyWebhook(rawBody, request.headers, process.env.KEYCHAT_WEBHOOK_SECRET!);