Preskoči na sadržaj

Bezbednost (bankarski nivo)

Kontrole usklađene sa obrascima Stripe Dashboard-a i modernih bankarskih web aplikacija. Sve navedeno je live na SDK portal BFF-u.

Portal je BFF (tRPC) ispred Perper API-ja. Trgovci ne drže dugotrajne bearer tokene u JavaScript-u. Sesije, refresh cookie-i i secret-reveal step-up tokeni izdaju se samo preko Set-Cookie.

HttpOnly cookies + __Host- prefiks

Produkcijski cookie-i koriste browser `__Host-` prefiks (Secure, Path=/, bez Domain). Vrijednosti su HttpOnly tako da XSS ne može da izvuče tokene iz document.cookie.

  • `__Host-perper.session` — kratka access sesija (bearer samo za serverske API pozive).
  • `__Host-perper.persistent` — 30-dnevni refresh / PIN challenge state.
  • `__Host-perper.key` — ~5s secret-reveal step-up token (SameSite=Strict).
  • `auth.session` vraća samo javni identitet (id, username, imena, email) — nikad bearer token.

Klizni životni vijek sesije

Access sesija traje 8 sati i klizi na navigaciji / session poll-u (middleware + auth.session). Persistent cookie traje 30 dana. Odjava briše sve auth cookie-e uključujući legacy nazive.

CSRF zaštita

Primarno: SameSite=Lax cookie-i. Defense-in-depth: svaka tRPC mutacija provjerava Origin/Referer naspram Host (i X-Forwarded-Host iza Contabo-a). Cross-site POST se odbija sa FORBIDDEN.

Zaštita od brute-force

Login, PIN i secret-key re-auth dijele rate limiter: 5 grešaka u 15 minuta zaključava IP+subject na 15 minuta. Neuspješni pokušaji imaju i kratki nasumični delay (~180–400ms) radi smanjenja timing oracle-a.

Anti-enumeracija

Nepoznato korisničko ime i pogrešna lozinka vraćaju isti tekst: “Invalid username or password.” Klijenti ne smiju granati po exists vs mismatch.

Auth audit log

Strukturirani JSON redovi (`type: auth_audit`) pišu se u process log za login/PIN/key uspjeh, grešku, rate-limit i logout. Subject je skraćeni username/userId — nikad lozinka, PIN ili token.

HTTP security headeri

Svaki odgovor uključuje bankarski baseline:

  • Content-Security-Policy (self + potrebni Next.js inline), frame-ancestors none, X-Frame-Options DENY
  • Strict-Transport-Security (max-age=31536000; includeSubDomains), X-Content-Type-Options nosniff
  • Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy (camera/mic/geo/payment off)
  • Cross-Origin-Opener-Policy same-origin, Cross-Origin-Resource-Policy same-site; autentifikovane rute šalju Cache-Control: no-store

Locale auth gate

Middleware štiti `/app` (i `/en|cnr/app/...`) da engleske rute ne mogu zaobići merchant workspace. `/pay` je javan; stranica traži prijavu prije terećenja Perper stanja.

Hostovani Pay hardening

Checkout koristi institucionalni white/red shell (isti jezik kao login). Iznosi se šalju API-ju kao decimalni stringovi (`zodMoney`). Success i pay ekrani imaju merchant/amount labele i secure-checkout napomenu. Plaćanja.

Projekat / webhook higijena

Kreiranje projekta validira apiUrl kao javni HTTPS (bez localhost / RFC1918). UI je CG/EN; tabele projekata pokazuju Active status; secret ima pristupačna copy dugmad. Projekti.

Pristupačnost i password manageri

Copy kontrole su pravi buttoni sa aria-label i aria-live “Kopirano”. Login koristi autocomplete=username / current-password; PIN koristi one-time-code. Greške imaju role=alert i aria-invalid.

Šta trgovci i dalje moraju

  1. Project secret čuvajte samo na serveru (env / vault) — nikad u mobile ili web client bundle-u.
  2. Fulfill narudžbi radite iz apiUrl callback-a, ne samo iz browser return URL-a.
  3. Za apiUrl i resultUrl koristite javni HTTPS; TLS sertifikati moraju biti validni.
  4. Nakon security upgrade-a jednom se odjavite (ili obrišite site cookie-e) da browser preuzme nove `__Host-` nazive.
  5. Verifikujte redirect `hash` i apiUrl `hash` kao HS256 JWT opaque `data` stringa project secretom (vidi docs Webhook-ovi). Webhook-ovi.

Obuhvat

Ove kontrole štite SDK developer portal BFF. Perper core ledger API ima sopstvene serverske kontrole. Rate limit je trenutno in-process (jedan Contabo Node); multi-instance bi zahtijevao dijeljeni store (npr. Redis). Verifikacija payment callback-a je na stranici Webhook-ovi. Ovlašćene institucije koje pregledaju Perper kao pružaoca tehnologije mogu koristiti ICT diligence paket na /partners/diligence.

ICT diligence paket (institucije)

Webhook-ovi · Autentifikacija · Greške · Changelog