Как устроена защита: действия от имени пользователя, черновики, двухшаговое подтверждение, защита данных покупателей, ограничения для файлов и базы и журнал всех вызовов.
Права и области
Ассистент работает от имени пользователя токена и подчиняется правам Joomla. Области токена дополнительно ограничивают набор инструментов: без области инструмент ассистент просто не видит.
Подтверждение изменений
Первый вызов «живого» изменения ничего не меняет: сервер возвращает ассистенту описание («что именно изменится: было → станет») и одноразовый код. Ассистент обязан показать это вам. Только после вашего «да» он повторяет вызов с кодом, и изменение выполняется. Код действует 10 минут, привязан к конкретному действию и не подходит ни для чего другого.
Попробуйте сами: попросите «опубликуй материал X», ответьте «нет» — ничего не изменится; повторите и ответьте «да» — изменится.
Совет: не включайте в клиенте автоматическое одобрение для инструментов записи: тогда подтверждение остаётся единственным барьером.
Персональные данные
Имена, телефоны, адреса и почта покупателей скрыты. Чтобы ассистент их увидел, нужны обе настройки: «Разрешить выдачу персональных данных» на сервере и область customers:pii у токена. Даже тогда данные показываются в маскированном виде (например, «И*** П***»).
Опасные наборы: шаблон и система
- Выключены по умолчанию и включаются осознанно (Система → Плагины).
- Шаблон: только внутри папки шаблона, только разрешённые типы файлов; проверка синтаксиса PHP, JSON и XML до записи; перезапись только с проверкой, что файл не менялся; резервная копия перед каждой записью и откат.
- Система: чтение базы только одним запросом на чтение и в режиме «READ ONLY»; закрыты таблицы пользователей, сессий и токенов; изменение только узкого списка настроек; защищённые плагины трогать нельзя.
- Перед включением этих наборов сделайте резервную копию сайта.
Недоверенные тексты
Названия товаров, тексты статей, примечания покупателей и строки журналов вводят посторонние люди. Сервер помечает их как данные, а не как команды, и ассистенты обучены не выполнять инструкции из таких текстов. Для особо важных действий всё равно нужно подтверждение человека.
Журнал вызовов
Компоненты → Dharma MCP → Журнал вызовов показывает каждое обращение: время, метод, инструмент, статус, время ответа, токен и параметры. Кроме вызовов инструментов, пишутся события входа:
| Метод | Что значит |
|---|---|
oauth/register | программа зарегистрировалась на сайте |
oauth/consent | вы разрешили («Успешно») или отклонили доступ |
oauth/token | выдан или обновлён токен (при отказе в тексте причина) |
auth/no-token, auth/rejected | запрос без токена или с недействительным токеном |
Отметьте записи галочками и нажмите «Удалить выбранные» или очистите журнал целиком кнопкой «Очистить весь журнал». Записи старше срока хранения удаляются сами.
Остаточные риски
- Утечка токена даёт доступ в пределах его областей: выдавайте минимум, короткие сроки для опасных областей.
- Набор «Шаблон» с PHP-файлами — это изменение кода сайта: включайте на время работы.
- Версии 0.x тестовые и не проходили независимый аудит.