2IZI Guard · 0.4.10 · PRE-1.0

Dokumentation

Nuværende core retter sig mod PHP 8.1+ og er framework-independent ved security boundary. Beskyt hver action eksplicit og forbrug token før business operation.

Til applikationshandlinger

Sikkerhed er en serverbeslutning, ikke en widgettilstand.

2IZI Guard beskytter formularer og offentlige handlinger med lokal risikovurdering, adaptiv friktion og engangstokens fra serveren. Ingen obligatorisk ekstern CAPTCHA-runtime.

PHP 8.1+Core runtime
MariaDB / MySQLBaseline storage
0required outbound runtime calls
256-bitopaque token entropy
PRE-1.0Nuværende branch har security-first architecture og automatisk regression/red-team coverage. Start med Shadow Mode og kalibrér enforcement på reel trafik.
Quick start

Lille integrationsflade. Endelig tilladelse forbliver server-side.

Nuværende core retter sig mod PHP 8.1+ og er framework-independent ved security boundary. Beskyt hver action eksplicit og forbrug token før business operation.

1. Frontend

FrontendHTML
<script src="/guard/public/assets/guard.js?v=0.4.10" defer></script>
<form data-guard-action="contact">
  …
</form>

2. Protected action

Beskyttet actionPHP
$result = Guard::verifyAndConsume(
    $_POST['guard_token'] ?? '',
    'contact'
);

if (!$result->allowed()) {
    http_response_code(403);
    exit;
}

Typiske actions

loginregisterpassword_resetcontactcheckoutfile_upload
Server authorityJavaScript-succes er ikke autorisation. Serveren verificerer og forbruger Guard-token.
Sådan virker det

Én beskyttet action. Fem uafhængige checkpoints.

Browseren kan deltage i challenge, men business permission udstedes og forbruges altid af serveren.

01

Valider context

Kontrollér Origin, action, session og grundlæggende limits før dyrt arbejde.

02

Vurder lokalt

Server- og applikationssignaler giver en forklarlig risikobeslutning.

03

Tilføj friktion

Policy vælger PASS, PoW, interaction, throttle eller deny.

04

Udsted én gang

Tilfældigt 256-bit opaque token bindes til session/action/origin og kort TTL.

05

Forbrug atomisk

Business endpoint forbruger én gang; replay, mismatch og expiry afvises.

Policy modes

ShadowObserve and predict; no enforcement.
InvisibleNo visible challenge.
AdaptiveRisk-based PASS / PoW / interaction / deny.
Always challengeRequire step-up for every protected request.

Betroet trafik kan passere stille; højere risiko kan udløse PoW, hold, throttle eller deny.

Integration

Integration contract

Nuværende core retter sig mod PHP 8.1+ og er framework-independent ved security boundary. Beskyt hver action eksplicit og forbrug token før business operation.

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-bit opaque tokens · hash-only storage · kort TTL · binding action/session/origin · HMAC integrity · one-time atomic consume · server-only business signals · fail-closed critical actions.

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.

Trusselsmodel

Vi antager, at angriberen kender hele koden.

Kode, JavaScript, API, DB-schema, PoW og thresholds kan være kendte; hemmeligheder og autorisation bliver på serveren.

Vi antager, at angriberen har

  • fuld source code
  • moderne AI-modeller
  • Playwright / Selenium / headless Chromium
  • residential proxies
  • captures af egen trafik

Security afhænger ikke af at skjule

  • JavaScript
  • challenge algorithms
  • field names
  • endpoints
  • risk thresholds
Core invariants256-bit opaque tokens · hash-only storage · kort TTL · binding action/session/origin · HMAC integrity · one-time atomic consume · server-only business signals · fail-closed critical actions.
Ærlig begrænsningIngen browser challenge kan matematisk bevise “biologisk menneske”. Critical actions kræver stadig passkey/WebAuthn, MFA, verified accounts, transaction authorization og business limits.
Open source

Offentlig kode skal øge auditérbarhed, ikke svække modellen.

At læse implementation må ikke skabe authorization bypass. Public review kræver disciplinerede releases, keys, repository permissions og vulnerability handling.

Publicér

  • source og ændringshistorik
  • SECURITY.md og responsible disclosure
  • threat model og architecture
  • automatiserede security / red-team tests
  • release checksums og notes

Hold privat

  • production config/guard.php
  • APP_KEY og HMAC/privacy/rate-limit keys
  • DB dumps og ægte security events
  • ægte cookies/tokens/sessions
  • deployment secrets og private infrastructure
Operations

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.

Aktuel status

0.4.10 · pre-1.0 · aktiv udvikling

Nuværende branch har security-first architecture og automatisk regression/red-team coverage. Start med Shadow Mode og kalibrér enforcement på reel trafik.

PHP coreTilgængelig
Webasyst / Shop-Script adapterEfter core-stabilisering
Verified agents / Privacy PassFremtid / standardafhængig
0.4.10The responsive-layout hotfix changes UI sizing and preview embedding only; database schema, token/challenge protocol, keys, risk engine and server authorization logic are unchanged.

Sprog

EnglishEnglishРусскийRussian简体中文Chinese (Simplified)繁體中文Chinese (Traditional)日本語Japanese한국어KoreanDeutschGermanFrançaisFrenchEspañolSpanishItalianoItalianPortuguês (Brasil)Portuguese (Brazil)العربيةArabicעבריתHebrewTürkçeTurkishPolskiPolishNederlandsDutchBahasa IndonesiaIndonesianTiếng ViệtVietnameseहिन्दीHindiPortuguês (Portugal)Portuguese (Portugal)ČeštinaCzechRomânăRomanianMagyarHungarianΕλληνικάGreekSvenskaSwedishNorskNorwegianDanskDanishSuomiFinnishไทยThai