FixVibe

// docs / baas security / clerk hardening

Clerki turvalisuse kontrollnimekiri: 20 punkti

Clerk haldab sinu rakenduse autentimist, seansse ja organisatsioone — mis tähendab, et vääras seadistatud Clerki integratsioon on auth-möödaminek, seansi-fikseerimise vektor või org-lekke rada. See kontrollnimekiri on 20-punktiline audit võtmete, seansi seadistuse, webhookide, organisatsioonide, JWT-mallide ja pideva jälgimise kohta. AI-koodimistööriistad ühendavad Clerki kiiresti mõistlike vaikeväärtustega; see nimekiri tabab need punktid, mille nad lauale jätavad.

Tausta saamiseks selle kohta, miks auth-kihi väärseadistused on AI-tööriistade nõrk koht, vaata Miks AI-koodimistööriistad jätavad turvaaugud. Auth0 paralleelse kontrollnimekirja jaoks vaata Auth0 turvalisuse kontrollnimekiri.

Keskkonna võtmed ja origin-allowlist

Clerk väljastab projekti kohta kaks erinevat võtit. Nende segiajamine või lekitamine on esimene ebaõnnestumismood.

  1. Kasuta brauseris avaldatavat võtit (pk_live_* tootmises, pk_test_* arendamises); kasuta saladuse võtit (sk_live_* / sk_test_*) ainult serveris. Avaldatav võti on turvaline NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY-s; saladuse võti ei tohi kunagi kanda avaliku env-i eesliidet ega kunagi esineda klient-komponendis.
  2. Kontrolli, et tootmisrakendus kasutab pk_live_*, mitte pk_test_*. Test-instantsid lubavad kontrollimata e-posti aadresse ja keelatud MFA-d — test mode'i tootmisse saatmine on auth-möödaminek.
  3. Seadista lubatud originid Clerki Dashboardis. Settings → Domains → Allowed origins peab loetlema sinu tootmise domeeni täpselt. Tühjad või metasümboliga origin-loendid lubavad ründajatel luua võltsitud Clerki esirakendusi, mis räägivad sinu backendiga.
  4. Pööra saladuse võti iga lahkumise või kahtlustatava lekke korral. Dashboard → API Keys → Reset. Vana võti muudetakse kehtetuks; juuruta serveripoolne kood enne pööramist uue väärtusega.

Seansi seadistus

Seansi aegumistähtaeg ja jõudeoleku ajakatkestused on vahe selles, kas varastatud seanss on 10-minutiline juhtum või 30-päevane.

  1. Sea seansi jõudeoleku ajakatkestus 30 minutile või vähemale SaaS-rakendustele, mis tegelevad tundliku andmega. Dashboard → Sessions → Inactivity timeout. Pangataseme rakendused peaksid kasutama 5–10 minutit; standardne SaaS 30–60 minutit; tarbijarakendused 1–7 päeva. Vaikeväärtus on 7 päeva.
  2. Luba seansi tühistamine paroolimuutusel, e-posti muutusel ja MFA registreerimisel. Dashboard → Sessions → Revoke on. Need on kasutaja algatatud turbe-sündmused; teistel seadmetel olemasolevad seansid tuleks tappa.
  3. Kontrolli seansse serveripoolel igal kaitstud rajal, mitte ainult sisselogimisel. Next.js-is: const { userId } = await auth(); server-komponendis / API-rajal loeb JWT-i küpsisest ja valideerib selle. Ära kunagi usalda ainult küpsise kontrolli.
  4. Sea SameSite=Lax (vaikeväärtus) või Strict seansi küpsisele. Kontrolli DevToolsis → Application → Cookies. SameSite=None on CSRF-vektor — ära kunagi kasuta seda, kui sa pole selgesõnaliselt seadistanud risti-domeeni auth-seadistust.

Webhookide kontroll

Clerki webhookid lähevad käima kasutaja elutsükli sündmustel (created, updated, deleted, session.ended). Need on sünkroniseerimismehhanism sinu andmebaasi jaoks — ja võltsitud webhook on andmebaasi-kirjutamise primitiiv.

  1. Kontrolli Svix-allkirja iga webhooki puhul. Clerki webhookid on allkirjastatud Svixiga. Kasuta new Webhook(secret).verify(body, headers). Lükka tagasi 401-ga, kui kontroll ebaõnnestub.
  2. Salvesta webhooki saladus keskkonnamuutujasse, mitte kunagi koodi. Saladus pööratakse iga Dashboard-i uuesti-genereerimisega — sinu juurutus peab seda env-ist lugema, mitte konstandist.
  3. Idempotentsus igas käsitlejas. Webhooki tarned võivad korduda. Kasuta tabelis webhook_events primaarvõtmena svix-id-päist, et dubleerimist vältida. Pakk olekumuudatus ja idempotentsuse insert samasse tehingusse.
  4. user.deleted-sündmuse korral kustuta või anonüümseta PII 24 tunni jooksul. GDPR / CCPA nõuab seda. Auditeeri kustutusrada: millised tabelid hoiavad selle kasutaja andmeid? Kasuta FK ON DELETE CASCADE seal, kus saad.

Organisatsioonid ja õigused

Kui kasutad Clerk Organizations'i, on org-piir sinu rentniku-isolatsioon. Iga serveripoolne päring peab selle järgi filtreerima.

  1. Igal API-rajal loe nii userId kui ka orgId väärtusest auth() ja filtreeri andmebaasi päringud mõlema järgi. WHERE org_id = $orgId AND user_id = $userId. Ära kunagi usalda päringu kehas olevat org_id-i.
  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. Testi orgide-vahelist isolatsiooni kahe päris org-kontoga. Loo Org A, täida andmetega, logi Org B-sse teises brauseris, proovi API kaudu Org A andmeid lugeda. Vastus peab olema 403 või 404.

JWT-mallid ja välised integratsioonid

JWT-mallid lükkavad Clerki identiteedi Supabase'i, Firebase'i ja teistesse alavoolu teenustesse. Vääras seadistatud mallid jagavad ülemääraselt väiteid või paljastavad andmeid, mida sa ei kavatsenud.

  1. Iga JWT-malli jaoks loetle iga väide ja kinnita, et see on vajalik. Dashboard → JWT Templates. Mall, mis saadab Supabase'i email ja phone, paljastab PII-d kõigile, kes brauseris JWT-i loevad.
  2. Sea klientpoolse alavoolu kutsetele kasutatavatele JWT-mallidele lühike aegumistähtaeg. 60 sekundit on standard alavoolu API-päringutele. Pikemaealised JWT-d varastatakse ja taasesitatakse.
  3. Kontrolli vastuvõtjapool audiens'i (aud) väidet. Supabase, Firebase jne peaksid kontrollima, et aud vastab oodatud teenuse identifikaatorile. Ilma selleta saab teenuse A jaoks väljastatud JWT autenditud teenusele B.

Operatiivne jälgimine

Auth on kõige rikkalikum signaalilogi, mis sul on. Jälgi seda.

  1. Saada hoiatusi ebaõnnestunud sisselogimiste hüpetel IP / konto kohta. 50× normaalne ebaõnnestumise määr on credential-stuffing-rünnak. Clerk väljastab need sündmused webhookidesse; suuna need oma SIEM-i.
  2. Kvartaalne ülevaade seansi ja instantsi seadete triivimise üle. Vaikeväärtused muutuvad, kui Clerk uueneb; "vanad seadistused" muutuvad aja jooksul vaikselt valeks. Diffi Dashboard'i JSON-eksport oma viimati teadaoleva korraliku koopia vastu.

Järgmised sammud

Käivita FixVibe-skannimine oma tootmise URL-i vastu — kontroll baas.clerk-auth0 märgib Clerki avaldatavaid võtmeid, test-võtmeid tootmises ja paki sisse jätkatud saladuse võtmeid. Auth0 paralleelse kontrollnimekirja jaoks vaata Auth0 turvalisuse kontrollnimekiri. Üldpildi saamiseks BaaS-pakkujate üle, loe BaaS väärseadistuse skanner.

// skanni oma baas-pinda

Leia avatud tabel enne, kui keegi teine seda teeb.

Anna ette tootmise URL. FixVibe loendab BaaS-pakkujad, kellega sinu rakendus suhtleb, võtab nende avalikest otspunktidest sõrmejäljed ja teatab, mida autentimata klient lugeda või kirjutada saab. Tasuta, paigaldust ei vaja, kaarti ei vaja.

  • Tasuta tase — 3 skannimist kuus, registreerimiseks kaarti ei vaja.
  • Passiivne BaaS-sõrmejäljevõtmine — domeeni kinnitamist ei vaja.
  • Supabase, Firebase, Clerk, Auth0, Appwrite ja palju muud.
  • AI-paranduskäskluse leid igale leiule — kleebi tagasi Cursor / Claude Code'i.
Käivita tasuta BaaS-skannimine

registreerimist ei nõuta

Clerki turvalisuse kontrollnimekiri: 20 punkti — Docs · FixVibe