FixVibe

// docs / baas security / clerk hardening

Clerk trygdarlisti: 20 evni

Clerk handfar váttan, fundir og samtøk fyri tína app — sum merkir, at ein misskipa Clerk-samanseting er ein váttans-umtak, ein funds-festingar-leið ella ein samtaks-lekan-leið. Hesin listi er ein 20-evnis endurskoðan yvir lyklar, funds-skipan, webhooks, samtøk, JWT-skablonir og varandi vakt. AI-kotuamboð seta Clerk upp skjótt við skilagóðum standardum; hesin listi fangar tey evni, sum tey eftirláta.

Fyri bakgrund um, hví váttan-stigs misskipanir eru ein veik tilstandur fyri AI-amboð, sí Hví AI-kotuamboð lata trygdarholur eftir. Fyri parallela listan á Auth0, sí Auth0 trygdarlisti.

Umhvørvi-lyklar og uppruna-loyvi-listi

Clerk gevur tveir ymiskar lyklar út per projekt. At blanda teir ella leka teir er fyrsta feilformin.

  1. Brúk hin almenna lykil (pk_live_* í framleiðslu, pk_test_* í menning) í kagaranum; brúk loyndarlykilin (sk_live_* / sk_test_*) bert á servaranum. Hin almenni lykil er tryggur í NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY; loyndarlykilin má ongantíð hava eina almenna env-forsetning og má ongantíð koma fram í einum klient-komponenti.
  2. Vátta at framleiðslu-appin brúkar pk_live_*, ikki pk_test_*. Royndar-instansir loyva óváttaðar emailadressur og deaktiveraða MFA — at avgreiða royndarmodul til framleiðslu er ein váttan-umtak.
  3. Skipa loyvdar uppruna í Clerk Dashboard. Settings → Domains → Allowed origins má lista tína framleiðslu-domena neyvt. Tóm ella vild-uppruna-listar loyva árásarmonnum at stovna roknar Clerk-frontendar, sum tosa við tín backend.
  4. Rotara loyndar-lykil á hvørjari avgangd ella roynd-leka. Dashboard → API Keys → Reset. Gamli lykilin er ógyldaður; endurdeploya servara-síðu-kotu við nýggja virði áðrenn rotering.

Funds-skipan

Funds-útrunning og óvirknar-tíðir eru munurin millum ein stolinn fundur sum er ein 10-minutta hending og ein 30-daga hending.

  1. Sett funds-óvirknar-tíð til 30 minuttir ella minni fyri SaaS-appir, sum handfara viðkvomar dátur. Dashboard → Sessions → Inactivity timeout. Bankakontu-appir eiga at brúka 5-10 minuttir; standard SaaS 30-60 minuttir; konsumar-appir 1-7 dagar. Standardin er 7 dagar.
  2. Virkja funds-niðurtaking á lykilorð-broyting, email-broyting og MFA-tilmelding. Dashboard → Sessions → Revoke on. Hesi eru brúkara-byrjaðar trygdar-hendingar; verandi fundir á øðrum eindum eiga at vera dripin.
  3. Vátta fundir á servara-síðu á hvørjari verjaðari leið, ikki bert við innskriving. Í Next.js: const { userId } = await auth(); í einum servara-komponenti / API-leið lesir JWT'in úr cookieinum og váttar hann. Trygd ongantíð á eini cookie-bert kanning.
  4. Sett SameSite=Lax (standard) ella Strict á funds-cookieinum. Vátta í DevTools → Application → Cookies. SameSite=None er ein CSRF-veitari — brúk hann ongantíð, um tú hevur ikki greitt skipa eina kross-domena-váttans-uppsetingi.

Webhook-vátting

Clerk webhooks koyra á brúkara-lívsstigs-hendingum (stovnaður, broyttur, strikaður, session.ended). Tær eru samkøyrslu-mekanismurin fyri tínum dátugrunni — og ein forged webhook er eitt dátugrunn-skriva-amboð.

  1. Vátta Svix-undirskriftina á hvørjum webhook. Clerk webhooks eru undirskrivaðir av Svix. Brúk new Webhook(secret).verify(body, headers). Nokta við 401, um vátting bregður.
  2. Goym webhook-loyndarmáli í einari umhvørvi-broyti, ongantíð í kotuni. Loyndarmálið roterar á hvørjari Dashboard-endurframleiðing — tín deploying má lesa tað úr env, ikki úr einari konstant.
  3. Idempotensa á hvørjari handfarara. Webhook-avgreidingar kunnu endurtaka. Brúk svix-id-headaran sum hovuðlykil í einari webhook_events-talvu fyri at dedupa. Lokk standa-broytingina og idempotensa-innleggingina í somu transaktión.
  4. Á user.deleted, harðstrik ella anonymisera PII innan 24 tímum. GDPR / CCPA krevja tað. Endurskoða strikinga-leiðina: hvørjar talvur hava hesa brúkaras dátur? Brúk FK ON DELETE CASCADE, har tú kanst.

Samtøk og rættindi

Um tú brúkar Clerk Organizations, er samtaks-markið tín leigara-einangring. Hvør servara-síðu-fyrispurningur má sía eftir tí.

  1. Á hvørjari API-leið, les bæði userId og orgId úr auth() og sía dátugrunns-fyrispurningar eftir báðum. WHERE org_id = $orgId AND user_id = $userId. Trygd ongantíð á eini org_id úr fyrispurningar-kroppinum.
  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. Royn kross-samtaks-einangring við tveimum veruligum samtaks-kontum. Stovna Samtak A, fyll í dátur, tilmelda teg á Samtak B í øðrum kagara, royn at lesa Samtak A's dátur gjøgnum API'in. Svarið má vera 403 ella 404.

JWT-skabelnir og uttarligar samansetingar

JWT-skabelnir trýsta Clerk-samleika inn í Supabase, Firebase og aðrar niðurstrøyma-tænastur. Misskipaðir skabelnir deila yvirsmá krøv ella avdúka dátur, tú ikki vildi.

  1. Fyri hvønn JWT-skabeln, lista hvørt krøv og vátta at tað er neyðugt. Dashboard → JWT Templates. Ein skabeln, sum sendir email og phone til Supabase, avdúkar PII fyri hvønn tann, sum lesur JWT'in í kagaranum.
  2. Sett stutta útrunning á JWT-skabelnir brúktar fyri klient-síðu niðurstrøyma-fyrispurningar. 60 sekundir fyri niðurstrøyma-API-fyrispurningar er standardurin. Longari-varandi JWT'ar verða stolnar og endurspæladar.
  3. Vátta áhoyrendi (aud)-krøvið á móttakara-síðuni. Supabase, Firebase, o.s.fr. eiga at kanna at aud samsvarar hin væntaða tænastu-samleiki. Uttan hetta kann ein JWT framleiddur til tænastu A vátta seg við tænastu B.

Rakstrarvakt

Váttan er hin høgsta-merkis loggkelda, tú hevur. Vakta hana.

  1. Boða um misvunnin-innskrivingar-loyk per IP / per kontu. Ein 50× normal-bristar-frekvens er ein nógv-prøving-árás. Clerk sendir hesar hendingar til webhooks; leið tær til tín SIEM.
  2. Kvartals-endurskoðan av funds- og instans-stillingar reksil. Standardar broytast, eftir sum Clerk uppdaterar; "gamlar skipanir" verða løgna skeivar í tíðini. Diffa Dashboard JSON-útflutning ímóti tíni seinasta-góðu kopiu.

Næstu stig

Koyr eina FixVibe-skanning móti tíni framleiðslu-URL — baas.clerk-auth0-eftirkanningin merkir Clerk almennar lyklar, royndar-lyklar í framleiðslu og bunkaðar loyndar-lyklar. Fyri parallela listan á Auth0, sí Auth0 trygdarlisti. Fyri tann omfattandi yvirlit yvir BaaS-veitarar, les BaaS-misskipansskannari.

// skanna tína baas-yvirflatu

Finn ta opnu talvuna, áðrenn onkur annar ger tað.

Set eina framleiðslu-URL inn. FixVibe telur upp tær BaaS-veitarar, sum tín app tosar við, fingraavryggjar teirra alment endapunkt og fráboðar, hvat ein óvátt klientur kann lesa ella skriva. Ókeypis, eingin innleggjing, eitt einki kort.

  • Ókeypis støði — 3 skanningar/mánaði, einki kort við tilmelding.
  • Passiv BaaS-fingraavrygging — eingin domena-vátting kravd.
  • Supabase, Firebase, Clerk, Auth0, Appwrite og fleiri.
  • AI-fix-leiðbeiningar á hvørjari findingi — set aftur inn í Cursor / Claude Code.
Clerk trygdarlisti: 20 evni — Docs · FixVibe