# Интеграции

Версия источника: 4880e8b4372c96001c2e052be28b68a95d31252b
Синхронизировано: 2026-11-09T11:15:07.649Z
Источник: https://github.com/sergey-from-riders/vibecoding-base/tree/4880e8b4372c96001c2e052be28b68a95d31252b

## Оглавление

- [Тайм-ауты интеграций](#integrations-timeouts)
- [Retry и backoff](#integrations-retries)
- [OAuth и PKCE](#integrations-oauth)
- [Подпись вебхуков](#integrations-webhooks)
- [Авторизация MCP](#integrations-mcp)
- [Загрузка файлов](#integrations-files)

<a id="integrations-timeouts"></a>

# Тайм-ауты интеграций

## Коротко

У каждого сетевого вызова должен быть срок ожидания и понятный результат при сбое.

## Плохо

```text
Ждать ответа провайдера бесконечно.
```

## Хорошо

```text
Тайм-аут по бюджету операции.
Понятная ошибка или повтор по правилам.
```

## Почему

Зависший провайдер не должен занимать все ресурсы приложения.

## Когда применять

Различайте тайм-аут соединения и всей операции. Значения выбираются по измерениям.

## Как проверить

- Смоделируйте зависание и медленное чтение ответа.

## Человек

Задаёт общий бюджет ожидания и поведение при недоступности сервиса.

## Агент

Реализует интеграцию по документации установленной версии и проверяет отказ, тайм-аут и повтор.

Контроль результата:

- Смоделируйте зависание и медленное чтение ответа.

## Источники

- [Timeouts, retries, and backoff with jitter](https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/)

Уровень: Обязательно. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/integrations/external/rules/timeouts.md)

---

<a id="integrations-retries"></a>

# Retry и backoff

## Коротко

Повторы ограничиваются числом попыток, общим временем и возможностью дублирования действия.

## Плохо

```text
Любая ошибка → бесконечный повтор каждую секунду.
```

## Хорошо

```text
Временная ошибка → пауза с разбросом →
ограниченный повтор с тем же ключом операции.
```

## Почему

Одновременные повторы многих клиентов усиливают перегрузку.

## Когда применять

Учитывайте Retry-After. Неверный пароль или недопустимые данные обычно не исправляются повтором.

## Как проверить

- Проверьте 429, 503, тайм-аут и постоянную ошибку.

## Человек

Определяет допустимое число повторов и последствия дубликатов.

## Агент

Реализует интеграцию по документации установленной версии и проверяет отказ, тайм-аут и повтор.

Контроль результата:

- Проверьте 429, 503, тайм-аут и постоянную ошибку.

## Источники

- [Timeouts, retries, and backoff with jitter](https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/)

Уровень: Рекомендуется. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/integrations/external/rules/retries.md)

---

<a id="integrations-oauth"></a>

# OAuth и PKCE

## Коротко

Для делегированного доступа проверяйте получателя токена и связывайте ответ с начатой авторизацией.

## Плохо

```text
Общий токен всем приложениям.
Произвольный redirect_uri.
```

## Хорошо

```text
Authorization Code + PKCE.
Точный redirect_uri, проверка issuer и state.
```

## Почему

Непроверенный адрес возврата или чужой токен может привести к захвату доступа.

## Когда применять

Состав проверок зависит от клиента и провайдера. Не используйте password grant; минимизируйте scopes.

## Как проверить

- Проверьте подмену state, redirect_uri и токена другой аудитории.

## Человек

Регистрирует приложение и выбирает минимальные разрешения.

## Агент

Реализует интеграцию по документации установленной версии и проверяет отказ, тайм-аут и повтор.

Контроль результата:

- Проверьте подмену state, redirect_uri и токена другой аудитории.

## Источники

- [RFC 9700: Best Current Practice for OAuth 2.0 Security](https://www.rfc-editor.org/rfc/rfc9700.html)

Уровень: Обязательно. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/integrations/external/rules/oauth.md)

---

<a id="integrations-webhooks"></a>

# Подпись вебхуков

## Коротко

Не считайте входящий JSON достоверным только потому, что он похож на событие провайдера.

## Плохо

```text
Получили {paid:true} → отметили заказ оплаченным.
```

## Хорошо

```text
Проверили подпись исходных байтов и срок.
Сохранили event_id. Затем обработали.
```

## Почему

Публичный адрес вебхука доступен и посторонним отправителям.

## Когда применять

Алгоритм подписи и допустимое время задаёт провайдер; обработка должна переживать дубликаты.

## Как проверить

- Отправьте неверную подпись, старое и повторное событие.

## Человек

Определяет доверенных отправителей и правила обработки событий.

## Агент

Реализует интеграцию по документации установленной версии и проверяет отказ, тайм-аут и повтор.

Контроль результата:

- Отправьте неверную подпись, старое и повторное событие.

## Источники

- [Receive Stripe events in your webhook endpoint](https://docs.stripe.com/webhooks)

Уровень: Обязательно. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/integrations/external/rules/webhooks.md)

---

<a id="integrations-mcp"></a>

# Авторизация MCP

## Коротко

Описание инструмента помогает модели, но разрешение операции проверяет сервер.

## Плохо

```text
Модель видит инструмент — значит ей разрешена запись.
```

## Хорошо

```text
Сервер проверяет пользователя, scopes, объект
и допустимость конкретного действия.
```

## Почему

Скрытая кнопка и описание инструмента не являются контролем доступа.

## Когда применять

Выбирайте совместимую версию протокола. Не передавайте токены через чужие серверы без проверки аудитории.

## Как проверить

- Отозванный доступ перестаёт работать при следующем вызове?

## Человек

Определяет доступные инструменты и полномочия каждого пользователя.

## Агент

Реализует интеграцию по документации установленной версии и проверяет отказ, тайм-аут и повтор.

Контроль результата:

- Отозванный доступ перестаёт работать при следующем вызове?

## Источники

- [Security Best Practices - Model Context Protocol](https://modelcontextprotocol.io/docs/2025-11-25/tutorials/security/security_best_practices)

Уровень: Обязательно. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/integrations/external/rules/mcp.md)

---

<a id="integrations-files"></a>

# Загрузка файлов

## Коротко

Имя и Content-Type от клиента не доказывают безопасность содержимого.

## Плохо

```text
Разрешён .png → сохраняем как исполняемый файл по имени клиента.
```

## Хорошо

```text
Ограничиваем размер и тип.
Генерируем имя. Храним вне исполняемого каталога.
```

## Почему

Загрузка может принести исполняемый код, переполнение хранилища или опасный документ.

## Когда применять

Нужные сканеры и преобразования зависят от типа файла. Проверяйте права на скачивание отдельно.

## Как проверить

- Проверьте неверный тип, большой файл, путь ../ и чужой доступ.

## Человек

Определяет разрешённые типы, размеры и сроки хранения.

## Агент

Реализует интеграцию по документации установленной версии и проверяет отказ, тайм-аут и повтор.

Контроль результата:

- Проверьте неверный тип, большой файл, путь ../ и чужой доступ.

## Источники

- [File Upload - OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html)

Уровень: Обязательно. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/integrations/external/rules/files.md)
