// 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.
- 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 turvalineNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY-s; saladuse võti ei tohi kunagi kanda avaliku env-i eesliidet ega kunagi esineda klient-komponendis. - Kontrolli, et tootmisrakendus kasutab
pk_live_*, mittepk_test_*. Test-instantsid lubavad kontrollimata e-posti aadresse ja keelatud MFA-d — test mode'i tootmisse saatmine on auth-möödaminek. - 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.
- 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.
- 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.
- 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.
- 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. - Sea
SameSite=Lax(vaikeväärtus) võiStrictseansi küpsisele. Kontrolli DevToolsis → Application → Cookies.SameSite=Noneon 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.
- Kontrolli Svix-allkirja iga webhooki puhul. Clerki webhookid on allkirjastatud Svixiga. Kasuta
new Webhook(secret).verify(body, headers). Lükka tagasi401-ga, kui kontroll ebaõnnestub. - Salvesta webhooki saladus keskkonnamuutujasse, mitte kunagi koodi. Saladus pööratakse iga Dashboard-i uuesti-genereerimisega — sinu juurutus peab seda env-ist lugema, mitte konstandist.
- Idempotentsus igas käsitlejas. Webhooki tarned võivad korduda. Kasuta tabelis
webhook_eventsprimaarvõtmenasvix-id-päist, et dubleerimist vältida. Pakk olekumuudatus ja idempotentsuse insert samasse tehingusse. 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.
- Igal API-rajal loe nii
userIdkui kaorgIdväärtusestauth()ja filtreeri andmebaasi päringud mõlema järgi.WHERE org_id = $orgId AND user_id = $userId. Ära kunagi usalda päringu kehas olevatorg_id-i. - <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.
- 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
403või404.
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.
- Iga JWT-malli jaoks loetle iga väide ja kinnita, et see on vajalik. Dashboard → JWT Templates. Mall, mis saadab Supabase'i
emailjaphone, paljastab PII-d kõigile, kes brauseris JWT-i loevad. - 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.
- Kontrolli vastuvõtjapool audiens'i (
aud) väidet. Supabase, Firebase jne peaksid kontrollima, etaudvastab 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.
- 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.
- 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.
