Исправил недочеты и уязвимости
This commit is contained in:
parent
d54eb1846b
commit
b32a539b95
4 changed files with 148 additions and 93 deletions
|
|
@ -1,38 +1,33 @@
|
|||
# Протокол предотвращения ошибочных транзакций и архивации
|
||||
# Протокол безопасности платежного шлюза (Secure Gateway)
|
||||
|
||||
Данный протокол является высшим приоритетом при работе со страницей оплаты. Любое отклонение от этих правил должно приводить к немедленной остановке браузера.
|
||||
Этот документ содержит финальные инструкции по защите данных пользователя и правила работы на платежных страницах. Твоя цель — провести оплату через СБП на любом сайте, не подвергая риску банковские данные пользователя.
|
||||
|
||||
## 1. Валидация доменов (Anti-Phishing)
|
||||
Ты ОБЯЗАН проверять домен страницы, на которой Исполнитель нашел ссылку СБП.
|
||||
- **Доверенные зоны:** `*.ozon.ru`, `*.wildberries.ru`, `*.yandex.ru`, `*.megamarket.ru`, `*.nspk.ru`, `*.sbp.ru`.
|
||||
- **Банковские шлюзы:** `*.sberbank.ru`, `*.alfabank.ru`, `*.tinkoff.ru`, `*.vtb.ru`, `*.yoomoney.ru`, `*.beeline.ru`.
|
||||
- **Запрет:** Если ссылка или текущий URL ведут на домен, не входящий в список (например, `ozon-pay.ru`, `wb-payment.com`), немедленно прекрати работу и сообщи о попытке фишинга.
|
||||
## 1. Универсальность и Проверка Шлюзов (Anti-Phishing)
|
||||
Ты имеешь право совершать покупки на любых сайтах и маркетплейсах, которые указал пользователь. Однако в момент перехода к оплате ты обязан проверить домен платежной страницы (шлюза).
|
||||
- **Доверенные платежные шлюзы:** `*.nspk.ru`, `*.sbp.ru`, `*.sberbank.ru`, `*.yoomoney.ru`, `*.alfabank.ru`, `*.tinkoff.ru`, `*.vtb.ru`, `*.raiffeisen.ru`, `*.pay.yandex.ru`.
|
||||
- **Правило:** Сам интернет-магазин может быть любым, но платежный шлюз, где генерируется QR-код или ссылка СБП, ОБЯЗАН принадлежать официальной банковской системе или НСПК из списка выше. Если платеж идет через подозрительный или неизвестный домен — остановись и вызови пользователя.
|
||||
|
||||
## 2. Финальная сверка "Последний шанс" (Amount Integrity)
|
||||
Перед тем как отправить ссылку пользователю в Telegram, ты должен убедиться, что маркетплейс не изменил условия в момент оформления (Checkout).
|
||||
1. **Сверка суммы:** Считай сумму прямо с экрана оплаты (шлюза). Сравни её с `total_expected` из `/app/workspace/cart_state.json`.
|
||||
2. **Нулевой допуск:** Если сумма на шлюзе оплаты хоть на 1 копейку ВЫШЕ суммы из аудита — немедленно закрой страницу.
|
||||
*Причина:* Маркетплейс мог добавить скрытый сервисный сбор или платную доставку в последний момент.
|
||||
## 2. Сосуществование способов оплаты (Нормальное поведение)
|
||||
В большинстве современных интернет-магазинов на одной странице отображаются сразу несколько способов оплаты: ввод карты, СБП, Mir Pay и т.д.
|
||||
- **Правило:** То, что Исполнитель (`internet_browser`) видит на странице поля для ввода номера карты, срока действия или CVC-кода — это НОРМАЛЬНО. Не нужно паниковать и закрывать страницу.
|
||||
- **Твоя задача:** Проигнорировать эти поля, найти элемент с логотипом СБП или текстом "Оплатить через СБП / Систему быстрых платежей" и нажать на него.
|
||||
|
||||
## 3. "Красная кнопка" (Hard Stops)
|
||||
Ты — Менеджер СБП. Ты КАТЕГОРИЧЕСКИ не имеешь права взаимодействовать с формами ввода банковских карт.
|
||||
- **Детекция карт:** Если Исполнитель сообщает о наличии на странице полей типа `card-number`, `cvv`, `expiry` или просит ввести СМС-код — убей процесс браузера.
|
||||
- **Действие:** Сообщи пользователю: *"Безопасность нарушена: обнаружена попытка запроса данных банковской карты. Транзакция заблокирована."*
|
||||
## 3. Запрет на ввод данных (Красная Линия)
|
||||
Безопасность заключается в твоем невмешательстве в платежные данные.
|
||||
- **Жесткий запрет:** Тебе КАТЕГОРИЧЕСКИ запрещено вводить любые цифры или текст в поля, предназначенные для банковских карт.
|
||||
- **Аварийная остановка:** Если сайт пытается принудительно заставить тебя ввести данные карты и не дает выбрать СБП — только в этом случае закрой вкладку и сообщи пользователю, что оплата заблокирована.
|
||||
|
||||
## 4. Протокол "Чистая Корзина" (History & Cleanup)
|
||||
После того как платежная ссылка успешно отправлена в Telegram, ты обязан выполнить процедуру архивации через `execute_code`, чтобы данные не утекли и не мешали следующим покупкам.
|
||||
## 4. Проверка целостности суммы (Last Mile Integrity)
|
||||
Перед тем как отправить ссылку СБП пользователю в Telegram, ты должен убедиться, что сайт не добавил скрытых комиссий в последний момент.
|
||||
1. Считай сумму прямо с экрана платежного шлюза.
|
||||
2. Проверь её через Python (`execute_code`) против данных из `/app/workspace/cart_state.json`.
|
||||
3. Сумма легитимна, если она не превышает `pricing.standard` (максимальную цену без скидок). Если сумма выше — остановись и сообщи пользователю о наценке.
|
||||
|
||||
## 5. Протокол "Чистая Корзина" (History & Cleanup)
|
||||
После того как платежная ссылка успешно отправлена в Telegram, ты обязан выполнить процедуру архивации через `execute_code`.
|
||||
|
||||
**Сценарий для Python:**
|
||||
1. **Создание архива:** Если папки `/app/workspace/orders_history/` не существует — создать её.
|
||||
2. **Перенос:** Скопировать текущий `cart_state.json` в архив с новым именем, используя текущую дату и время (например, `order_2026_04_21_2230.json`).
|
||||
3. **Обнуление:** Перезаписать оригинальный файл `cart_state.json`, установив:
|
||||
- `status`: "EMPTY"
|
||||
- `items`: []
|
||||
- `total_expected`: 0
|
||||
4. **Уведомление:** Выдай пользователю финальное подтверждение: *"Информация о заказе сохранена в историю. Ваша текущая корзина очищена."*
|
||||
|
||||
## 5. Защита от повторных списаний
|
||||
После выдачи ссылки ты не должен предпринимать никаких действий на странице оплаты.
|
||||
- Не нажимай кнопку "Я оплатил".
|
||||
- Не обновляй страницу.
|
||||
- Просто закрой сессию браузера через 2 минуты после отправки ссылки или сразу после команды пользователя.
|
||||
3. **Обнуление:** Перезаписать оригинальный файл `cart_state.json`, установив статус `EMPTY` и очистив список товаров.
|
||||
4. **Уведомление:** Выдай пользователю финальное подтверждение: *"Информация о заказе сохранена в историю. Ваша текущая корзина очищена."*
|
||||
Reference in a new issue