Безопасность решает сервер, а не состояние виджета.
2IZI Guard защищает формы и публичные действия: риск оценивается локально, нагрузка проверки адаптируется к ситуации, а окончательное разрешение выдаётся одноразовым серверным токеном. Обязательной внешней CAPTCHA нет.
Минимальная поверхность интеграции. Окончательное решение — на сервере.
Текущее ядро рассчитано на PHP 8.1+ и не зависит от framework на границе безопасности. Каждое action защищается явно, а токен погашается до выполнения бизнес-операции.
1. Frontend
<script src="/guard/public/assets/guard.js?v=0.4.10" defer></script> <form data-guard-action="contact"> … </form>
2. Protected action
$result = Guard::verifyAndConsume(
$_POST['guard_token'] ?? '',
'contact'
);
if (!$result->allowed()) {
http_response_code(403);
exit;
}Типовые actions
loginregisterpassword_resetcontactcheckoutfile_uploadОдно защищённое действие. Пять независимых контрольных точек.
Браузер может участвовать в challenge, но разрешение на бизнес-действие всегда выдаёт и погашает сервер.
Проверка контекста
Origin, action, session и базовые лимиты проверяются до дорогих операций.
Локальная оценка
Серверные и прикладные сигналы формируют объяснимое решение по риску.
Адаптивная проверка
Политика выбирает PASS, Proof-of-Work, интерактивную проверку, throttle или deny.
Одноразовый токен
Случайный 256-битный opaque-токен привязывается к session, action, origin и короткому TTL.
Атомарное погашение
Бизнес-endpoint использует токен ровно один раз; replay, mismatch и expiry отклоняются.
Policy modes
Доверенный трафик может пройти незаметно. Повышенный риск может включить Proof-of-Work, удержание, ограничение частоты или отказ.
Integration contract
Текущее ядро рассчитано на PHP 8.1+ и не зависит от framework на границе безопасности. Каждое action защищается явно, а токен погашается до выполнения бизнес-операции.
Action registry
The server defines allowed action names. Never use a client-provided action as authorization context.
'contact' => [ 'mode' => 'adaptive', 'fail_mode' => 'open_with_limit' ]
Origin / session binding
256-битные opaque-токены · хранение только hash · короткий TTL · action/session/origin binding · HMAC integrity · одноразовое atomic consume · server-only бизнес-сигналы · fail-closed для критичных действий.
UI isolation
Shadow DOM isolates Guard visuals from host CSS. It is a UI reliability layer, not a security boundary.
Localization
UI locale is BCP-47-style, UTF-8, RTL-ready, touch/keyboard compatible, and extendable with locale packs.
Предполагаем, что атакующий знает весь исходный код.
2IZI Guard следует Kerckhoffs-style модели: исходники, JavaScript, API-контракт, схема БД, PoW и пороги могут быть известны. Защита должна сохраняться, потому что секреты и авторизация находятся на сервере.
Считаем, что у атакующего есть
- полный исходный код
- современные AI-модели
- Playwright / Selenium / headless Chromium
- residential proxy
- записи собственного трафика
Безопасность не зависит от скрытия
- JavaScript
- алгоритмов challenge
- имён полей
- endpoint-ов
- risk thresholds
Публичный код должен усиливать проверяемость, а не ослаблять модель.
Чтение реализации не должно давать обход авторизации. Публичный аудит полезен, если релизы, ключи, права репозитория и обработка уязвимостей организованы дисциплинированно.
Публикуем
- исходный код и историю изменений
- SECURITY.md и responsible disclosure
- threat model и архитектуру
- автоматические security / red-team тесты
- контрольные суммы и release notes
Оставляем закрытым
- production config/guard.php
- APP_KEY и HMAC/privacy/rate-limit ключи
- дампы БД и реальные security events
- реальные cookies, tokens и sessions
- секреты деплоя и приватные детали инфраструктуры
Diagnostics, tests and updates
Diagnostics
php bin/diagnose.php
Check database state, key material, Origin configuration and registered actions before enabling enforcement.
Regression / red-team
bash tests/run-all.sh
Release acceptance includes replay, proxy, risk, tampering, UI and integration checks. Run disposable MariaDB/MySQL concurrency tests where available.
Updates
Read release notes and migrations first. Do not overwrite production config/guard.php with a distribution template. Rotate keys only when a release explicitly requires it.
Rollout
Start with Shadow Mode, review predicted decisions and false positives, tune action policies, then enable calibrated enforcement.
0.4.10 · pre-1.0 · активная разработка
Текущая ветка имеет security-first архитектуру и автоматические regression/red-team тесты. Внедрять постепенно: сначала Shadow Mode, затем настроенный enforcement на реальном трафике.