Безопасность

Исходящая сеть

URL исходящего HTTP (network.request) и WebSocket (network.websocket) проходят проверку:

Нет отдельного API песочницы для привилегированного auth-сервера. Обмен OAuth-токенами — обычный network.request.post на публичный HTTPS URL, который вы настраиваете (см. OAuth и секреты).

Входящий HTTP

Аддоны не открывают порты. Входящие маршруты регистрируются на Express-сервере главного процесса:

Params и конфиг

Записи в api.config.updateParams и api.config.setConfig проверяются в главном процессе (лимиты размера, проверка разрешений).

Выполнение в VM

Начальное выполнение index.js ограничено 5 секундами. Ошибки в таймерах и обработчиках событий перехватываются и логируются; воркер не падает.

Неперехваченные ошибки вне этих обёрток по-прежнему могут уронить процесс воркера. После 3 последовательных падений без стабильной работы автоперезапуск прекращается, пока пользователь не перезапустит аддон в настройках — см. Жизненный цикл — Защита от цикла падений.

Токен доступа фронтенда (data.token)

Каждый экземпляр аддона получает стабильный секрет на устройство, id аддона и путь установки в data.token. Он добавляется к URL виджета/статики как ?token=….

Проверяйте query.token === data.token (или эквивалентный заголовок) на HTTP-эндпоинтах, предназначенных только для встроенной веб-страницы, чтобы другие локальные страницы не могли их вызывать.

Токен меняется, если пользователь переустанавливает аддон или переносит папку.

Разрешение ROOT

require() и неограниченный доступ к модулям доступны только с ROOT. Не запрашивайте ROOT в распространяемых аддонах.

Приватное хранилище

storage.Read() / Write() сохраняют JSON в {installPath}/storage_data.json. Без шифрования; считайте локальным кэшем. Удаляется при деинсталляции.