FixVibe

// docs / baas security / clerk hardening

Kontrolný zoznam zabezpečenia Clerk: 20 položiek

Clerk obsluhuje autentizáciu, relácie a organizácie pre vašu aplikáciu — čo znamená, že chybne nakonfigurovaná Clerk integrácia je obídenie autentizácie, vektor fixácie relácie alebo cesta úniku organizácie. Tento kontrolný zoznam je 20-položkový audit naprieč kľúčmi, konfiguráciou relácie, webhookmi, organizáciami, JWT šablónami a priebežným monitorovaním. AI nástroje na kódovanie zapájajú Clerk rýchlo s rozumnými predvolenými hodnotami; tento zoznam zachytí položky, ktoré nechávajú na stole.

Pre kontext, prečo sú chybné konfigurácie vrstvy autentizácie slabým miestom AI nástrojov, si pozrite Prečo nástroje na kódovanie s AI zanechávajú bezpečnostné medzery. Pre paralelný kontrolný zoznam pre Auth0 si pozrite Kontrolný zoznam zabezpečenia Auth0.

Environment kľúče a zoznam povolených originov

Clerk vydáva dva odlišné kľúče na projekt. Ich miešanie alebo únik je prvý spôsob zlyhania.

  1. Použite publishable kľúč (pk_live_* v produkcii, pk_test_* v dev) v prehliadači; secret kľúč (sk_live_* / sk_test_*) iba na strane servera. Publishable kľúč je bezpečný v NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY; secret kľúč nikdy nesmie niesť verejnú env predponu a nikdy sa nesmie objaviť v klientskom komponente.
  2. Overte, že produkčná aplikácia používa pk_live_*, nie pk_test_*. Testovacie inštancie povoľujú neoverené emailové adresy a deaktivované MFA — odoslanie testovacieho režimu do produkcie je obídenie autentizácie.
  3. Nakonfigurujte povolené originy v Clerk Dashboarde. Settings → Domains → Allowed origins musí presne uvádzať vašu produkčnú doménu. Prázdne alebo žolíkové zoznamy originov umožňujú útočníkom vytvárať podvodné Clerk frontendy, ktoré komunikujú s vaším backendom.
  4. Rotujte secret kľúč pri akomkoľvek odchode alebo podozrení na únik. Dashboard → API Keys → Reset. Starý kľúč je zneplatnený; znova nasaďte kód na strane servera s novou hodnotou pred rotáciou.

Konfigurácia relácie

Doba platnosti relácie a časové limity neaktivity sú rozdiel medzi tým, či ukradnutá relácia je 10-minútový incident alebo 30-dňový.

  1. Nastavte časový limit neaktivity relácie na 30 minút alebo menej pre SaaS aplikácie spracúvajúce citlivé dáta. Dashboard → Sessions → Inactivity timeout. Aplikácie bankovej úrovne by mali používať 5-10 minút; štandardný SaaS 30-60 minút; spotrebiteľské aplikácie 1-7 dní. Predvolené je 7 dní.
  2. Zapnite zrušenie relácie pri zmene hesla, zmene emailu a registrácii MFA. Dashboard → Sessions → Revoke on. Sú to bezpečnostné udalosti iniciované používateľom; existujúce relácie na iných zariadeniach by mali byť ukončené.
  3. Overujte relácie na strane servera pri každej chránenej trase, nielen pri prihlasovaní. V Next.js: const { userId } = await auth(); v server komponente / API route číta JWT z cookie a validuje ho. Nikdy neverte kontrole iba cookie.
  4. Nastavte SameSite=Lax (predvolené) alebo Strict na session cookie. Overte v DevTools → Application → Cookies. SameSite=None je CSRF vektor — nikdy ho nepoužívajte, pokiaľ ste explicitne nenakonfigurovali cross-domain auth nastavenie.

Overovanie webhookov

Clerk webhooky sa spúšťajú pri udalostiach životného cyklu používateľa (created, updated, deleted, session.ended). Sú synchronizačným mechanizmom pre vašu databázu — a podvrhnutý webhook je primitívom pre zápis do databázy.

  1. Overujte Svix podpis na každom webhooku. Clerk webhooky sú podpísané Svixom. Použite new Webhook(secret).verify(body, headers). Odmietnite s 401, ak overenie zlyhá.
  2. Ukladajte webhook secret v environment premennej, nikdy v kóde. Secret sa rotuje pri každej regenerácii v Dashboarde — vaše nasadenie ho musí čítať z env, nie z konštanty.
  3. Idempotencia na každom handleri. Doručenia webhookov sa môžu opakovať. Použite hlavičku svix-id ako primárny kľúč v tabuľke webhook_events na deduplikáciu. Zabaľte zmenu stavu a vloženie idempotencie do tej istej transakcie.
  4. Pri user.deleted tvrdo odstráňte alebo anonymizujte PII do 24 hodín. GDPR / CCPA to vyžadujú. Auditujte cestu mazania: ktoré tabuľky obsahujú dáta tohto používateľa? Použite FK ON DELETE CASCADE tam, kde môžete.

Organizácie a oprávnenia

Ak používate Clerk Organizations, hranica organizácie je vaša izolácia tenantov. Každý dopyt na strane servera musí filtrovať podľa nej.

  1. Na každej API route čítajte userId aj orgId z auth() a filtrujte databázové dopyty podľa oboch. WHERE org_id = $orgId AND user_id = $userId. Nikdy neverte org_id z tela požiadavky.
  2. <strong>Use Clerk role checks for privileged operations, not boolean checks against the user object.</strong> <code>has({ role: 'org:admin' })</code> reads the role from the verified JWT. A user can spoof a boolean on a stale client object; they cannot spoof a JWT claim.
  3. Otestujte cross-org izoláciu s dvomi reálnymi účtami organizácií. Vytvorte Org A, naplňte dátami, prihláste sa do Org B v inom prehliadači, pokúste sa čítať dáta Org A cez API. Odpoveď musí byť 403 alebo 404.

JWT šablóny a externé integrácie

JWT šablóny posúvajú Clerk identitu do Supabase, Firebase a ďalších downstream služieb. Chybne nakonfigurované šablóny príliš zdieľajú nároky alebo odhaľujú dáta, ktoré ste nemienili.

  1. Pre každú JWT šablónu vypíšte každý nárok a potvrďte, že je nevyhnutný. Dashboard → JWT Templates. Šablóna, ktorá posiela email a phone do Supabase, vystavuje PII komukoľvek, kto číta JWT v prehliadači.
  2. Nastavte krátku dobu platnosti na JWT šablónach používaných pre downstream volania na strane klienta. 60 sekúnd pre downstream API požiadavky je štandard. Dlhšie žijúce JWT sú kradnuté a prehrávané.
  3. Overujte nárok audience (aud) na prijímajúcej strane. Supabase, Firebase atď. by mali kontrolovať, že aud zodpovedá očakávanému identifikátoru služby. Bez toho môže JWT vydaný pre službu A autentizovať službu B.

Operatívne monitorovanie

Autentizácia je log zdrojom s najvyšším signálom, aký máte. Sledujte ho.

  1. Upozorňujte na skoky zlyhaných prihlásení podľa IP / podľa účtu. 50× normálna miera zlyhania je credential-stuffing útok. Clerk emituje tieto udalosti do webhookov; smerujte ich do vášho SIEM.
  2. Štvrťročná revízia driftu nastavení relácie a inštancie. Predvolené hodnoty sa menia s aktualizáciami Clerku; „staré konfigurácie" sa časom potichu stávajú nesprávnymi. Diffujte JSON export z Dashboardu proti vašej poslednej známej-dobrej kópii.

Ďalšie kroky

Spustite sken FixVibe proti vašej produkčnej URL — kontrola baas.clerk-auth0 označuje Clerk publishable kľúče, testovacie kľúče v produkcii a zbalené secret kľúče. Pre ekvivalentný kontrolný zoznam na Auth0 si pozrite Kontrolný zoznam zabezpečenia Auth0. Pre zastrešujúci pohľad naprieč BaaS poskytovateľmi si prečítajte Skener chybnej konfigurácie BaaS.

// naskenujte svoj baas povrch

Nájdite otvorenú tabuľku skôr, ako to urobí niekto iný.

Zadajte produkčnú URL. FixVibe vymenuje poskytovateľov BaaS, s ktorými vaša aplikácia komunikuje, zosníma odtlačky ich verejných koncových bodov a nahlási, čo môže neoverený klient čítať alebo zapisovať. Zadarmo, bez inštalácie, bez karty.

  • Bezplatná úroveň — 3 skeny / mesiac, bez karty pri registrácii.
  • Pasívne snímanie odtlačkov BaaS — bez potreby overenia domény.
  • Supabase, Firebase, Clerk, Auth0, Appwrite a ďalšie.
  • AI návrhy opráv pri každom náleze — vložte späť do Cursor / Claude Code.
Spustiť bezplatný sken BaaS

registrácia nie je potrebná

Kontrolný zoznam zabezpečenia Clerk: 20 položiek — Docs · FixVibe