Skip to content

Feature Protection

github-actions[bot] edited this page Jul 16, 2026 · 1 revision

🔒 Защита от подмены

← Возможности · Главная · Сравнение

Уникальная пара freeze/lock: конфигурация, которую нельзя подменить после загрузки, и критичные ключи, защищённые точечно. Ни у одного из пяти аналогов этого нет.

Принцип работы

  • freeze() — реестр становится read-only навсегда: set/merge/ forget/defer/factory бросают FrozenRegistryException. Обратной операции нет намеренно (fail-safe: «оттаять» прод-конфиг нельзя).
  • lock($key) — точечная блокировка: перезапись и удаление ключа — LockedKeyException; остальные ключи свободны.
  • Чтение всегда работает; isFrozen()/isLocked($key) — интроспекция.
use CloudCastle\Registry\Registry;

$config = new Registry(['api_key' => 'секрет', 'debug' => false]);

$config->lock('api_key');            // ключ API не подменить
$config->set('debug', true);         // остальное — свободно

$config->freeze();                   // конфиг загружен — фиксируем
$config->set('debug', false);        // FrozenRegistryException
$config->get('api_key');             // чтение работает

Сценарий безопасности

Загрузчик приложения собирает конфигурацию слоями (merge), блокирует секреты (lock) и замораживает реестр (freeze) до передачи управления бизнес-коду. Любая попытка плагина или скомпрометированной зависимости подменить параметры подключения заканчивается исключением в логах, а не тихой подменой.

См. также

Clone this wiki locally