- Мульти-провайдер: PAPAYU_LLM_PROVIDERS — сбор планов от нескольких ИИ (Claude, OpenAI), агрегация - Тренды дизайна и иконок: вкладка в модалке, поиск по безопасным доменам (Tavily include_domains) - Snyk Code: PAPAYU_SNYK_SYNC, REST API issues → snyk_findings в agent-sync - Documatic: architecture_summary из .papa-yu/architecture.md в agent-sync - Личная автоматизация: capability personal-automation (терминал git/npm/cargo, открытие URL) - agent_sync расширен: snyk_findings, architecture_summary; analyze_project_cmd и run_batch пишут sync - Документация: SNYK_AND_DOCUMATIC_SYNC.md, SECURITY_AND_PERSONAL_AUTOMATION.md, обновлён CLAUDE_AND_AGENT_SYNC Co-authored-by: Cursor <cursoragent@cursor.com>
70 lines
5.9 KiB
Markdown
70 lines
5.9 KiB
Markdown
# Безопасность и личная автоматизация (терминал + интернет)
|
||
|
||
PAPA YU рассчитан на **личное использование**. Ниже — как настроена защита и как приложение может работать с терминалом и интернетом (Chrome, GitHub и т.д.) оставаясь надёжно защищённым.
|
||
|
||
---
|
||
|
||
## 1. Что разрешено по умолчанию
|
||
|
||
- **Файлы:** чтение/запись только в выбранных пользователем путях; защита служебных каталогов (`.git`, `node_modules`, `target`, `dist` и т.д.).
|
||
- **Сеть:** только исходящие HTTPS-запросы к настроенным API (LLM, OpenRouter и т.д.) из кода приложения; никакого произвольного доступа с фронтенда.
|
||
- **Браузер:** через встроенный механизм Tauri (`shell:allow-open`) можно открывать только ссылки `http(s)://`, `mailto:`, `tel:` в **стандартном браузере** системы (Chrome, Safari и т.д.). Произвольные команды в shell для этого не нужны.
|
||
|
||
---
|
||
|
||
## 2. Личная автоматизация: терминал и интернет
|
||
|
||
Чтобы приложение могло **самостоятельно** выполнять ограниченный набор действий в терминале и открывать ссылки (GitHub, документация и т.д.), используется отдельная capability **personal-automation**.
|
||
|
||
### Что даёт personal-automation
|
||
|
||
- **Открытие URL в браузере** (если по какой-то причине нужен явный вызов):
|
||
- macOS: `open` с аргументом-URL (только `https?://...`).
|
||
- Linux: `xdg-open` с URL.
|
||
- Windows: `cmd /c start "" <URL>`.
|
||
|
||
- **Терминал — только разрешённые команды и аргументы:**
|
||
- **git**: `status`, `pull`, `push`, `add`, `commit`, `checkout`, `branch`, `log`, `diff`, `clone`, `fetch`, `merge` и аргументы по валидатору (URL репозитория, имена веток/путей).
|
||
- **npm**: `install`, `run`, `ci`, `test`, `build`, `start`, `exec`, `update` и допустимые имена скриптов/пакетов.
|
||
- **npx**: `-y`, `create-*`, `run`, `exec` и допустимые имена.
|
||
- **cargo**: `build`, `test`, `run`, `check`, `clippy`, `fmt`, `install` и допустимые аргументы.
|
||
- **python3**: `-m pytest`, `pip install` и т.п. с ограниченными аргументами.
|
||
|
||
Любая **другая** команда или аргумент вне этого списка **заблокированы** на уровне Tauri (scope shell).
|
||
|
||
### Как включить
|
||
|
||
Capability `personal-automation` уже подключён в проекте: окно `main` получает эти разрешения вместе с базовыми. Ничего дополнительно включать не нужно.
|
||
|
||
### Как ужесточить защиту
|
||
|
||
1. **Отключить выполнение команд в терминале:**
|
||
В `src-tauri/capabilities/` удалите или переименуйте `personal-automation.json` и пересоберите приложение. Останется только открытие ссылок через стандартный `shell:allow-open` (без явных `open`/`xdg-open`/`start` из capability).
|
||
|
||
2. **Сузить список команд:**
|
||
Отредактируйте `personal-automation.json`: удалите ненужные блоки `{"name": "...", "cmd": "...", "args": [...]}` или сократите `args` до конкретных подкоманд/валидаторов.
|
||
|
||
3. **Оставить только открытие ссылок:**
|
||
В `personal-automation.json` оставьте только команды `open-url`, `xdg-open-url` и при необходимости `start-url`; блоки `git`, `npm`, `cargo`, `python3`, `npx` удалите.
|
||
|
||
---
|
||
|
||
## 3. Принципы защиты
|
||
|
||
- **Нет произвольного кода:** фронтенд не может выполнить произвольную строку в shell (например, `bash -c "..."`). Разрешены только команды и аргументы из scope.
|
||
- **Allowlist команд:** в `verify` и `auto_check` на бэкенде выполняются только команды из `src-tauri/config/verify_allowlist.json` с фиксированными аргументами.
|
||
- **Подтверждение пользователя:** применение изменений к проекту только после явного подтверждения (`user_confirmed`).
|
||
- **Сеть:** все вызовы к LLM/API идут из Rust (reqwest); ключи и URL задаются через переменные окружения, не хранятся в фронтенде.
|
||
|
||
---
|
||
|
||
## 4. Рекомендации для личного использования
|
||
|
||
- Храните `.env.openai` (ключи API) только локально и не коммитьте их в репозиторий.
|
||
- Используйте один аккаунт/профиль ОС для повседневной работы; не запускайте приложение с правами администратора без необходимости.
|
||
- При необходимости отключите или сузьте `personal-automation` по инструкциям выше.
|
||
|
||
---
|
||
|
||
*См. также: `README.md` (раздел «Безопасность»), `config/verify_allowlist.json`.*
|