Безопасность интеграций
Одни и те же правила действуют для лент, проверок доступности и любой будущей интеграции: адрес указывает администратор сервера, а бот живёт в общей инфраструктуре.
Куда бот не ходит
| Правило | Что это значит |
|---|---|
Только http и https | file://, ftp:// и остальное закрыто списком разрешённого, а не списком запрещённого |
| Адрес проверяется после разрешения имени | Имя может указывать на 127.0.0.1; проверяется каждый полученный адрес |
| Перенаправление проверяется как новый адрес | Публичный адрес, отвечающий редиректом на внутренний, не поможет |
| Ответ ограничен по размеру и времени | Лента на гигабайт — это не лента |
Закрыты localhost, приватные диапазоны и служебные адреса облачных метаданных.
Как проверяются входящие вебхуки
- Токен в адресе. Неверный — отказ до всего остального.
- Подпись. HMAC-SHA256, сравнение за постоянное время. Посимвольное сравнение выдавало бы длину общего префикса временем ответа.
- Свежесть. Отметка времени должна отличаться от текущего момента не больше чем на минуту.
- Идентификатор доставки. Повтор с тем же идентификатором отмечается дубликатом.
- Размер тела. До 256 КБ.
Где хранится секрет
Секрет вебхука хранится в базе в зашифрованном виде. Хранить его приходится: проверить HMAC чужого запроса без ключа невозможно.
Отсюда следствие, которое лучше знать заранее: доступ к базе означает доступ к каналам, куда пишут эти вебхуки. Мы выбрали настоящую подпись, а не её видимость, и говорим об этой цене прямо.
Секрет показывается один раз — в личных сообщениях при создании. Перевыпуск немедленно отключает старый.
Что делать при утечке секрета
/вебхук новый-секрет— старый перестаёт работать сразу.- Обновите секрет в настройках отправителя.
- Посмотрите журнал доставок: не приходило ли чего-то постороннего.
Права
Право integrations.manage помечено как доступ к личным данным именно поэтому: оно открывает секреты вебхуков.