Keamanan
- Row-Level Security (RLS) pada semua tabel tenant, dengan
app.current_tenantper-request. - Session device-bound —
X-Device-Idharus match session. - Login rate-limited (
isLoginRateLimited+recordLoginFailure). - OTP cooldown 30 detik.
- Idempotency keys tenant-scoped — mencegah race antar tenant.
- Capability matrix per role (
packages/klola-authorization). - Module entitlement per bisnis (
infra/auth/module-authorization.ts).
Praktik lain: sanitize semua user input, rateLimiter middleware untuk
endpoint sensitif, mengikuti OWASP, tidak menyimpan data sensitif dalam
plain text, dan secrets via environment variables (wrangler secrets).