FixVibe

// docs / baas security / clerk hardening

Clerk security checklist፦ 20 ንጥሎች

Clerk ለapp-ዎ auth፣ session-ዎች እና organization-ዎችን ይይዛል — ይህም የተበላሸ Clerk integration auth bypass፣ session-fixation vector ወይም org-leakage path ነው ማለት ነው። ይህ checklist 20-ንጥል audit በkey-ዎች፣ session config፣ webhook-ዎች፣ organization-ዎች፣ JWT template-ዎች እና ongoing monitoring ላይ ነው። AI coding tool-ዎች Clerk-ን በምክንያታዊ default ቶሎ ያዘጋጃሉ፤ ይህ list የሚተውዋቸውን ንጥሎች ይይዛል።

Auth-layer misconfiguration-ዎች ለምን AI-tooling ድካማ ቦታ መሆናቸውን ለማወቅ AI coding tool-ዎች ለምን የደህንነት ክፍተት ይተዋሉ ይመልከቱ። በAuth0 ላይ ለሚተካከለው checklist Auth0 security checklist ይመልከቱ።

Environment key-ዎች እና origin allowlist

Clerk ለproject-ናቸው ሁለት የተለያዩ key-ዎችን ያወጣል። እነዚህን መቀላቀል ወይም ማፍሰስ የመጀመሪያው የውድቀት ሁነት ነው።

  1. Publishable key-ን (pk_live_* በproduction፣ pk_test_* በdev) በbrowser ይጠቀሙ፤ secret key-ን (sk_live_* / sk_test_*) በserver ብቻ ይጠቀሙ። Publishable key በNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY ውስጥ ደህና ነው፤ secret key public env prefix በፍጹም መሸከም የለበትም እና በclient component ውስጥ በፍጹም መታየት የለበትም።
  2. Production app pk_live_* ይጠቀማል፣ pk_test_* አይደለም መሆኑን ያረጋግጡ። Test instance-ዎች unverified email address-ዎችን እና የተዘጋ MFA ይፈቅዳሉ — test mode ወደ production መልኩ auth bypass ነው።
  3. በClerk Dashboard ውስጥ የተፈቀዱ origin-ዎችን ያዋቅሩ። Settings → Domains → Allowed origins production domain-ዎን በትክክል list ማድረግ አለበት። ባዶ ወይም wildcard origin list-ዎች attacker-ዎች ከbackend-ዎ ጋር የሚነጋገሩ rogue Clerk frontend-ዎችን እንዲፈጥሩ ይፈቅዳሉ።
  4. በማንኛውም መውጣት ወይም በተጠረጠረ leak ላይ secret key-ን ሮቴት ያድርጉ። Dashboard → API Keys → Reset። ቀደም ያለው key invalidate ይደረጋል፤ ከሮቴት በፊት server-side code-ን በአዲሱ value እንደገና ይዘርጉ።

Session configuration

Session expiry እና idle timeout የተሰረቀ session 10-ደቂቃ event ወይም 30-ቀን event የመሆኑ ልዩነት ናቸው።

  1. ለsensitive data ለሚይዙ SaaS app-ዎች session inactivity timeout-ን ለ30 ደቂቃ ወይም በታች ያስቀምጡ። Dashboard → Sessions → Inactivity timeout። Banking-tier app-ዎች 5-10 ደቂቃ ይጠቀማሉ፤ standard SaaS 30-60 ደቂቃ፤ consumer app-ዎች 1-7 ቀናት። ነባሪ 7 ቀናት ነው።
  2. በpassword change፣ email change እና MFA enrollment ላይ session revocation-ን ያስችሉ። Dashboard → Sessions → Revoke on። እነዚህ user-initiated የደህንነት event-ዎች ናቸው፤ በሌላ device ላይ ያሉ session-ዎች መገደል አለባቸው።
  3. Session-ዎችን በእያንዳንዱ protected route server-side ያረጋግጡ፣ በsign-in ጊዜ ብቻ አይደለም። በNext.js ውስጥ፦ const { userId } = await auth(); በserver component / API route ውስጥ JWT-ን ከcookie ያነባል እና ይፈትሻል። Cookie-only check-ን በፍጹም አያምኑ።
  4. በsession cookie ላይ SameSite=Lax (default) ወይም Strict ያስቀምጡ። በDevTools → Application → Cookies ውስጥ ያረጋግጡ። SameSite=None CSRF vector ነው — cross-domain auth setup በግልጽ ካላዋቀሩ በፍጹም አይጠቀሙ።

Webhook verification

Clerk webhook-ዎች በuser lifecycle event-ዎች (created፣ updated፣ deleted፣ session.ended) ላይ ይተኩሳሉ። እነዚህ ለdatabase-ዎ synchronization mechanism ናቸው — እና የተጭበረበረ webhook database-write primitive ነው።

  1. በእያንዳንዱ webhook ላይ Svix signature-ን ያረጋግጡ። Clerk webhook-ዎች በSvix የተፈረሙ ናቸው። new Webhook(secret).verify(body, headers) ይጠቀሙ። Verification ካልተሳካ በ401 ይከለክሉ።
  2. Webhook secret-ን በenvironment variable ያከማቹ፣ በcode ውስጥ አይደለም። Secret በእያንዳንዱ Dashboard regeneration ላይ ይሮቴታል — deploy-ዎ ከenv ማንበብ አለበት፣ ከconstant አይደለም።
  3. በእያንዳንዱ handler ላይ idempotency። Webhook delivery-ዎች ሊደገሙ ይችላሉ። svix-id header-ን dedupe ለማድረግ በwebhook_events table ውስጥ እንደ primary key ይጠቀሙ። State change-ና idempotency insert-ን በተመሳሳዩ transaction ይከበቡ።
  4. user.deleted ላይ PII-ን በ24 ሰዓታት ውስጥ hard-delete ወይም anonymize ያድርጉ። GDPR / CCPA ይጠይቃሉ። የdeletion path-ን audit ያድርጉ፦ የዚህን user data ምን table-ዎች ይይዛሉ? የሚቻለውን ቦታ FK ON DELETE CASCADE ይጠቀሙ።

Organization-ዎች እና permission-ዎች

Clerk Organizations ከተጠቀሙ፣ org boundary የእርስዎ tenant isolation ነው። እያንዳንዱ server-side query በእሱ filter መደረግ አለበት።

  1. በእያንዳንዱ API route ላይ ሁለቱንም userId እና orgId-ን ከauth() ያንብቡ እና database query-ዎችን በሁለቱም filter ያድርጉ። WHERE org_id = $orgId AND user_id = $userId። ከrequest body የመጣን org_id በፍጹም አያምኑ።
  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. Cross-org isolation-ን በሁለት እውነተኛ org account-ዎች ይፈትኑ። Org A ይፈጥሩ፣ data ይሙሉ፣ በሌላ browser ላይ ወደ Org B sign in ያድርጉ፣ የOrg A data-ን በAPI ለማንበብ ይሞክሩ። Response 403 ወይም 404 መሆን አለበት።

JWT template-ዎች እና external integration-ዎች

JWT template-ዎች የClerk identity-ን ወደ Supabase፣ Firebase እና ሌሎች downstream service-ዎች ይገፋሉ። የተበላሹ template-ዎች over-share claim ወይም ያልመጠኑትን data ያጋልጣሉ።

  1. ለእያንዳንዱ JWT template፣ እያንዳንዱን claim list ያድርጉ እና አስፈላጊ መሆኑን ያረጋግጡ። Dashboard → JWT Templates። email እና phone-ን ወደ Supabase የሚልክ template በbrowser ውስጥ JWT-ን ለሚያነብ ሁሉ PII ያጋልጣል።
  2. ለclient-side downstream call-ዎች የተጠቀሙ JWT template-ዎች ላይ አጭር expiry ያስቀምጡ። ለdownstream API request 60 ሰከንዶች standard ነው። ረዥም-ጊዜ JWT-ዎች ይሰረቃሉ እና ይደገማሉ።
  3. በተቀባይ ጎን audience (aud) claim-ን ያረጋግጡ። Supabase፣ Firebase ወዘተ aud ለሚጠበቀው service identifier መዛመዱን መፈትሽ አለባቸው። ያለ ይህ፣ ለservice A የተወጣ JWT ለservice B authenticate ሊያደርግ ይችላል።

Operational monitoring

Auth ካለዎት እጅግ-signal log source ነው። ይከታተሉት።

  1. በIP / በaccount failed-login ድንገተኛ መጨመር ላይ alert ያድርጉ። ከnormal failure rate 50× credential-stuffing attack ነው። Clerk እነዚህ event-ዎችን ወደ webhook ይልካል፤ ወደ SIEM ይዘርጉ።
  2. የsession እና instance settings drift ሩብ-ዓመታዊ review። Clerk ሲዘምን ነባሪዎች ይቀየራሉ፤ "የቆዩ configuration-ዎች" ከጊዜ ጋር በዝምታ ስህተት ይሆናሉ። Dashboard JSON export-ን ከመጨረሻ-known-good copy ጋር ይዳኝ።

ቀጣይ እርምጃዎች

በproduction URL-ዎ ላይ FixVibe scan ያስኪዱ — የbaas.clerk-auth0 check Clerk publishable key-ዎችን፣ በproduction ውስጥ test key-ዎችን እና bundled secret key-ዎችን ይሰምራል። በAuth0 ላይ ለሚተካከለው checklist Auth0 security checklist ይመልከቱ። በBaaS provider-ዎች ላይ ለሰፊ እይታ BaaS misconfiguration scanner ያንብቡ።

// የbaas surface-ዎን scan ያድርጉ

ሌላ ሰው ከማግኘቱ በፊት ክፍት table-ውን ይፈልጉ።

የproduction URL ያስገቡ። FixVibe app-ዎ ከሚነጋገራቸው BaaS provider-ዎች ጋር enumerate ያደርጋል፣ የእነሱን public endpoint-ዎች fingerprint ያደርጋል፣ እና unauthenticated client ሊያነብ ወይም ሊጽፍ የሚችለውን ይዘግባል። ነጻ ነው፣ install አይፈልግም፣ card አያስፈልግም።

  • ነጻ tier — በወር 3 scan፣ ለsignup card አያስፈልግም።
  • Passive BaaS fingerprinting — domain verification አያስፈልገውም።
  • Supabase፣ Firebase፣ Clerk፣ Auth0፣ Appwrite እና ሌሎች።
  • በእያንዳንዱ finding ላይ AI fix prompt — ወደ Cursor / Claude Code ይለጥፉት።
ነጻ BaaS scan ያስኪዱ

signup አያስፈልግም

Clerk security checklist፦ 20 ንጥሎች — Docs · FixVibe