// docs / baas security / clerk hardening
Lis tcheke sekirite Clerk: 20 eleman
Clerk manyen auth, sesyon, ak òganizasyon pou aplikasyon ou — ki vle di yon entegrasyon Clerk move konfigire se yon kontoune-auth, yon vektè fiksasyon-sesyon, oswa yon chemen koule-org. Lis tcheke sa a se yon odit 20-eleman atravè kle, konfig sesyon, webhooks, òganizasyon, modèl JWT, ak monitè kontinyèl. Zouti kodaj IA kable Clerk vit ak default rezonab; lis sa a kenbe eleman yo kite sou tab la.
Pou kontèks sou poukisa move konfigirasyon nan kouch auth se yon pwen fèb zouti-IA, gade Poukisa zouti kodaj IA kite twou sekirite. Pou lis tcheke paralèl sou Auth0, gade Lis tcheke sekirite Auth0.
Kle anviwònman ak lis-pèmèt orijin
Clerk bay de kle distenk pa pwojè. Mèlanje yo oswa fè yo koule se premye mòd echèk la.
- Itilize kle piblikab (
pk_live_*nan pwodiksyon,pk_test_*nan dev) nan navigatè a; itilize kle sekrè (sk_live_*/sk_test_*) sou sèvè a sèlman. Kle piblikab la ansekirite nanNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY; kle sekrè a pa janm dwe pote yon prefiks env piblik epi pa janm dwe parèt nan yon konpozan kliyan. - Verifye aplikasyon pwodiksyon an itilize
pk_live_*, papk_test_*. Sit tès pèmèt adrès imèl ki pa verifye ak MFA dezaktive — voye mòd tès nan pwodiksyon se yon kontoune-auth. - Konfigire orijin ki pèmèt nan Dashboard Clerk la. Settings → Domains → Allowed origins dwe liste domèn pwodiksyon ou egzakteman. Lis orijin vid oswa kat kite atakè kreye frontend Clerk vye ki pale ak backend ou.
- Woule kle sekrè a sou nenpòt depa oswa koule sispèk. Dashboard → API Keys → Reset. Ansyen kle anile; redeplwaye kòd bò-sèvè ak nouvo valè a anvan rotasyon.
Konfigirasyon sesyon
Ekspirasyon sesyon ak limit tan inaktif yo se diferans ant yon sesyon vòlè ki yon ensidan 10-minit ak yon 30-jou.
- Mete limit tan inaktivite sesyon nan 30 minit oswa mwens pou aplikasyon SaaS k ap manyen done sansib. Dashboard → Sessions → Inactivity timeout. Aplikasyon nivo-bankè ta dwe itilize 5-10 minit; SaaS estanda 30-60 minit; aplikasyon konsomatè 1-7 jou. Default se 7 jou.
- Aktive revokasyon sesyon sou chanjman modpas, chanjman imèl, ak enskripsyon MFA. Dashboard → Sessions → Revoke on. Sa yo se evènman sekirite inisye-itilizatè; sesyon ki egziste sou lòt aparèy ta dwe touye.
- Verifye sesyon bò-sèvè sou chak wout pwoteje, pa sèlman nan enskripsyon. Nan Next.js:
const { userId } = await auth();nan yon konpozan sèvè / wout API li JWT a nan cookie a epi valide li. Pa janm fye yon tcheke cookie-sèlman. - Mete
SameSite=Lax(default) oswaStrictsou cookie sesyon an. Verifye nan DevTools → Application → Cookies.SameSite=Nonese yon vektè CSRF — pa janm itilize li sof si ou eksplisitman konfigire yon konfigirasyon auth kwa-domèn.
Verifikasyon webhook
Webhooks Clerk tire sou evènman sik lavi itilizatè (kreye, mete ajou, efase, session.ended). Yo se mekanis sinkronizasyon pou baz done ou — epi yon webhook fonyen se yon primitif ekriti-baz done.
- Verifye siyati Svix sou chak webhook. Webhooks Clerk siyen pa Svix. Itilize
new Webhook(secret).verify(body, headers). Rejte ak401si verifikasyon echwe. - Estoke sekrè webhook nan yon varyab anviwònman, pa janm nan kòd. Sekrè a woule sou chak rejenerasyon Dashboard — deplwaman ou dwe li li nan env, pa nan yon konstan.
- Idempotans sou chak manyè. Livrezon webhook kapab repete. Itilize antèt
svix-idkòm yon kle prensipal nan yon tabwebhook_eventspou dediplike. Vlope chanjman eta a ak ensèsyon idempotans yo nan menm tranzaksyon. - Sou
user.deleted, di-efase oswa anonim PII anndan 24 èdtan. GDPR / CCPA mande li. Odit chemen efase a: ki tab ki kenbe done itilizatè sa a? Itilize FK ON DELETE CASCADE kote ou kapab.
Òganizasyon ak pèmisyon
Si ou itilize Òganizasyon Clerk, fwontyè org la se izolasyon lokatè ou. Chak demand bò-sèvè dwe filtre pa li.
- Sou chak wout API, li tou de
userIdakorgIdsoti nanauth()epi filtre demand baz done pa tou de.WHERE org_id = $orgId AND user_id = $userId. Pa janm fye yonorg_idsoti nan kò demand lan. - <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.
- Teste izolasyon kwa-org ak de vrè kont org. Kreye Org A, popilarize done, konekte nan Org B nan yon lòt navigatè, eseye li done Org A via API a. Repons dwe
403oswa404.
Modèl JWT ak entegrasyon ekstèn
Modèl JWT pouse idantite Clerk nan Supabase, Firebase, ak lòt sèvis dèyè. Modèl move konfigire pataje twòp reklamasyon oswa ekspoze done ou pa t vle.
- Pou chak modèl JWT, liste chak reklamasyon epi konfime li nesesè. Dashboard → JWT Templates. Yon modèl ki voye
emailakphonenan Supabase ekspoze PII bay nenpòt moun ki li JWT a nan navigatè a. - Mete ekspirasyon kout sou modèl JWT itilize pou apèl bò-kliyan dèyè. 60 segonn pou demand API dèyè se estanda. JWT pi lontan-viv vòlè epi rejwe.
- Verifye reklamasyon odyans (
aud) sou bò resepsyon. Supabase, Firebase, elatriye dwe tcheke keaudkoresponn ak idantifyan sèvis ki espere. San sa, yon JWT bay pou sèvis A kapab otantifye sèvis B.
Monitè operasyonèl
Auth se sous log siyal-pi-wo ou genyen. Gade li.
- Alète sou pik echèk-konekte pa IP / pa kont. Yon to echèk 50× nòmal se yon atak boure-kalifikasyon. Clerk emisyon evènman sa yo nan webhooks; voye yo nan SIEM ou.
- Revizyon trimestriyèl deriv paramèt sesyon ak sit. Default chanje pandan Clerk mete ajou; "ansyen konfigirasyon" silansyezman vin move sou tan. Diff ekspòtasyon JSON Dashboard kont dènye kopi byen-konnen ou.
Etap pwochèn
Lanse yon eskanè FixVibe kont URL pwodiksyon ou — tcheke baas.clerk-auth0 drapo kle piblikab Clerk, kle tès nan pwodiksyon, ak kle sekrè pakèt. Pou lis tcheke ekivalan sou Auth0, gade Lis tcheke sekirite Auth0. Pou view parapli atravè founisè BaaS, li Eskanè move konfigirasyon BaaS.
