La sécurité est une décision serveur, pas un état de widget.
2IZI Guard protège les formulaires et actions publiques grâce à une évaluation locale du risque, une friction adaptative et des jetons serveur à usage unique. Aucun runtime CAPTCHA externe obligatoire.
Petite surface d’intégration. L’autorisation finale reste côté serveur.
Le core actuel cible PHP 8.1+ et reste indépendant du framework à la frontière de sécurité. Protégez chaque action explicitement et consommez le token avant l’opération métier.
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 typiques
loginregisterpassword_resetcontactcheckoutfile_uploadUne action protégée. Cinq contrôles indépendants.
Le navigateur peut participer à la challenge, mais la permission métier est toujours émise et consommée par le serveur.
Valider le contexte
Vérifier Origin, action, session et limites grossières avant les opérations coûteuses.
Évaluer localement
Les signaux serveur et applicatifs produisent une décision de risque explicable.
Ajouter de la friction
La policy choisit PASS, PoW, interaction, throttle ou deny.
Émettre une fois
Lier un token opaque aléatoire 256-bit à session/action/origin et un TTL court.
Consommer atomiquement
L’endpoint métier consomme une fois; replay, mismatch et expiration sont refusés.
Policy modes
Le trafic de confiance peut passer silencieusement; un risque élevé peut déclencher PoW, maintien, limitation ou refus.
Integration contract
Le core actuel cible PHP 8.1+ et reste indépendant du framework à la frontière de sécurité. Protégez chaque action explicitement et consommez le token avant l’opération métier.
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
tokens opaques 256-bit · stockage hash uniquement · TTL court · liaison action/session/origin · intégrité HMAC · consommation atomique unique · signaux métier server-only · fail-closed pour actions critiques.
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.
Nous supposons que l’attaquant connaît tout le code.
Le code, JavaScript, l’API, le schéma DB, PoW et les seuils peuvent être connus. Les secrets et l’autorisation restent côté serveur.
Nous supposons que l’attaquant possède
- le code source complet
- des modèles AI modernes
- Playwright / Selenium / headless Chromium
- des proxies résidentiels
- des captures de son propre trafic
La sécurité ne repose pas sur la dissimulation de
- JavaScript
- algorithmes de challenge
- noms de champs
- endpoints
- seuils de risque
Le code public doit améliorer l’audit, pas affaiblir le modèle.
Lire l’implémentation ne doit pas créer de bypass d’autorisation. La revue publique exige releases, clés, droits du dépôt et traitement des vulnérabilités rigoureux.
Publier
- source et historique
- SECURITY.md et responsible disclosure
- threat model et architecture
- tests security / red-team automatisés
- checksums et release notes
Garder privé
- production config/guard.php
- APP_KEY et clés HMAC/privacy/rate-limit
- dumps DB et vrais security events
- vrais cookies, tokens et sessions
- secrets de déploiement et détails privés
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 · développement actif
La branche actuelle a une architecture security-first et des tests regression/red-team automatisés. Déployez d’abord Shadow Mode puis calibrez l’enforcement sur le trafic réel.