FixVibe

// docs / baas security / clerk hardening

បញ្ជីត្រួតពិនិត្យសុវត្ថិភាព Clerk៖ 20 ធាតុ

Clerk គ្រប់គ្រង auth, session និង organization សម្រាប់កម្មវិធីរបស់អ្នក — ដែលមានន័យថាការរួមបញ្ចូល Clerk ដែលកំណត់រចនាសម្ព័ន្ធខុសគឺជា auth bypass, វ៉ិចទ័រ session-fixation ឬផ្លូវ org-leakage។ បញ្ជីត្រួតពិនិត្យនេះគឺជាការត្រួតពិនិត្យ 20 ធាតុនៅទូទាំង key, ការកំណត់ session, webhook, organization, JWT template និងការតាមដានបន្ត។ ឧបករណ៍សរសេរកូដ AI ភ្ជាប់ Clerk ឱ្យលឿនជាមួយលំនាំដើមដែលសមរម្យ; បញ្ជីនេះចាប់ធាតុដែលពួកវាទុកនៅលើតុ។

សម្រាប់ផ្ទៃខាងក្រោយអំពីហេតុអ្វីការកំណត់រចនាសម្ព័ន្ធ auth-layer ខុសគឺជាចំណុចខ្សោយឧបករណ៍ AI, សូមមើល ហេតុអ្វីឧបករណ៍សរសេរកូដ AI ទុកគម្លាតសុវត្ថិភាព។ សម្រាប់បញ្ជីត្រួតពិនិត្យស្របគ្នាលើ Auth0, សូមមើល បញ្ជីត្រួតពិនិត្យសុវត្ថិភាព Auth0

Environment key និង allowlist origin

Clerk ចេញ key ផ្សេងគ្នាពីរក្នុង project នីមួយៗ។ ការលាយពួកវា ឬការធ្វើឱ្យពួកវាលេចធ្លាយគឺជារបៀបបរាជ័យដំបូង។

  1. ប្រើ publishable key (pk_live_* នៅក្នុងផលិតកម្ម, pk_test_* នៅក្នុង dev) នៅក្នុង browser; ប្រើ secret key (sk_live_* / sk_test_*) នៅ server តែប៉ុណ្ណោះ។ publishable key មានសុវត្ថិភាពនៅក្នុង NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY; secret key មិនត្រូវផ្ទុក prefix env សាធារណៈ និងមិនត្រូវលេចឡើងនៅក្នុង component client ឡើយ។
  2. ផ្ទៀងផ្ទាត់ថាកម្មវិធីផលិតកម្មប្រើ pk_live_*, មិនមែន pk_test_* Test instance អនុញ្ញាតអាស័យដ្ឋានអ៊ីមែលដែលមិនបានផ្ទៀងផ្ទាត់ និង MFA បិទ — ការ ship test mode ទៅផលិតកម្មគឺជា auth bypass។
  3. កំណត់រចនាសម្ព័ន្ធ origin ដែលអនុញ្ញាតនៅក្នុង Clerk Dashboard។ Settings → Domains → Allowed origins ត្រូវរាយ domain ផលិតកម្មរបស់អ្នកច្បាស់ៗ។ បញ្ជី origin ទទេ ឬ wildcard អនុញ្ញាតឱ្យអ្នកវាយប្រហារបង្កើត frontend Clerk ក្លែងក្លាយដែលនិយាយជាមួយ backend របស់អ្នក។
  4. បង្វិល secret key លើការចាកចេញណាមួយ ឬការសង្ស័យលេចធ្លាយ។ Dashboard → API Keys → Reset។ Key ចាស់ត្រូវបានបដិសេធ; redeploy កូដ server-side ជាមួយតម្លៃថ្មីមុនពេលបង្វិល។

ការកំណត់រចនាសម្ព័ន្ធ session

ការផុតកំណត់ session និង timeout អសកម្មគឺជាភាពខុសគ្នារវាង session ដែលលួចជាហេតុការណ៍ 10 នាទី និង 30 ថ្ងៃ។

  1. កំណត់ timeout អសកម្ម session ទៅ 30 នាទី ឬតិចជាងសម្រាប់កម្មវិធី SaaS ដែលគ្រប់គ្រងទិន្នន័យរសើប។ Dashboard → Sessions → Inactivity timeout។ កម្មវិធីកម្រិតធនាគារគួរប្រើ 5-10 នាទី; SaaS ស្តង់ដារ 30-60 នាទី; កម្មវិធីអ្នកប្រើ 1-7 ថ្ងៃ។ លំនាំដើមគឺ 7 ថ្ងៃ។
  2. បើកការដកហូត session លើការផ្លាស់ប្ដូរ password, ការផ្លាស់ប្ដូរអ៊ីមែល និងការចុះឈ្មោះ MFA។ Dashboard → Sessions → Revoke on។ ទាំងនេះគឺជាព្រឹត្តិការណ៍សុវត្ថិភាពដែលផ្ដួចផ្ដើមដោយអ្នកប្រើ; session ដែលមានស្រាប់នៅលើឧបករណ៍ផ្សេងគួរត្រូវសម្លាប់។
  3. ផ្ទៀងផ្ទាត់ session server-side លើរាល់ route ការពារ មិនមែនគ្រាន់តែនៅពេលចូល។ នៅក្នុង Next.js៖ const { userId } = await auth(); នៅក្នុង server component / API route អាន JWT ពី cookie និងផ្ទៀងផ្ទាត់វា។ មិនត្រូវជឿការត្រួតពិនិត្យ cookie តែប៉ុណ្ណោះឡើយ។
  4. កំណត់ SameSite=Lax (លំនាំដើម) ឬ Strict លើ cookie session។ ផ្ទៀងផ្ទាត់នៅក្នុង DevTools → Application → Cookies។ SameSite=None គឺជាវ៉ិចទ័រ CSRF — មិនដែលប្រើវាលុះត្រាតែអ្នកបានកំណត់រចនាសម្ព័ន្ធ auth cross-domain ច្បាស់លាស់។

ការផ្ទៀងផ្ទាត់ webhook

Webhook Clerk ដំណើរការលើព្រឹត្តិការណ៍វដ្ដជីវិតរបស់អ្នកប្រើ (created, updated, deleted, session.ended)។ ពួកវាគឺជាយន្តការ synchronization សម្រាប់ database របស់អ្នក — និង webhook ក្លែងក្លាយគឺជា primitive សរសេរ database។

  1. ផ្ទៀងផ្ទាត់ហត្ថលេខា Svix លើ webhook នីមួយៗ។ Webhook Clerk ត្រូវបានចុះហត្ថលេខាដោយ Svix។ ប្រើ new Webhook(secret).verify(body, headers)។ បដិសេធជាមួយ 401 បើការផ្ទៀងផ្ទាត់បរាជ័យ។
  2. រក្សា webhook secret នៅក្នុង environment variable, មិនមែននៅក្នុងកូដឡើយ។ Secret បង្វិលលើការបង្កើតថ្មី Dashboard នីមួយៗ — deploy របស់អ្នកត្រូវអានវាពី env មិនមែនពី constant ឡើយ។
  3. Idempotency លើ handler រាល់។ ការដឹកជញ្ជូន Webhook អាចធ្វើម្ដងទៀត។ ប្រើ header svix-id ជា primary key នៅក្នុងតារាង webhook_events ដើម្បីលុបស្ទួន។ រុំការផ្លាស់ប្ដូរស្ថានភាព និងការ insert idempotency នៅក្នុង transaction ដូចគ្នា។
  4. នៅពេល user.deleted, លុបយ៉ាងរឹង ឬ anonymize PII ក្នុង 24 ម៉ោង។ GDPR / CCPA ត្រូវការវា។ ត្រួតពិនិត្យផ្លូវលុប៖ តារាងណាមួយដែលកាន់ទិន្នន័យអ្នកប្រើនេះ? ប្រើ FK ON DELETE CASCADE កន្លែងដែលអ្នកអាច។

Organization និងសិទ្ធិ

បើអ្នកប្រើ Clerk Organization, ព្រំដែន org គឺជាការដាច់ស្រយាល tenant របស់អ្នក។ រាល់ query database server-side ត្រូវត្រងតាមវា។

  1. នៅរាល់ API route, អានទាំង userId និង orgId ពី auth() និងត្រង query database តាមទាំងពីរ។ WHERE org_id = $orgId AND user_id = $userId។ មិនត្រូវជឿ org_id ពី body request ឡើយ។
  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 ជាមួយគណនី org ពិតពីរ។ បង្កើត Org A, បំពេញទិន្នន័យ, ចូល Org B នៅក្នុង browser ផ្សេង, ព្យាយាមអានទិន្នន័យ Org A តាមរយៈ API។ Response ត្រូវជា 403404

JWT template និងការរួមបញ្ចូលខាងក្រៅ

JWT template រុញអត្តសញ្ញាណ Clerk ទៅ Supabase, Firebase និងសេវាកម្ម downstream ផ្សេងទៀត។ Template ដែលកំណត់រចនាសម្ព័ន្ធខុសចែករំលែក claim ខ្លាំងពេក ឬបង្ហាញទិន្នន័យដែលអ្នកមិនមានបំណង។

  1. សម្រាប់ JWT template នីមួយៗ, រាយរាល់ claim និងបញ្ជាក់ថាវាចាំបាច់។ Dashboard → JWT Templates។ Template ដែល ship email និង phone ទៅ Supabase បង្ហាញ PII ដល់នរណាក៏ដោយដែលអាន JWT នៅក្នុង browser។
  2. កំណត់ការផុតកំណត់ខ្លីលើ JWT template ដែលប្រើសម្រាប់ការហៅ downstream client-side។ 60 វិនាទីសម្រាប់ request API downstream គឺជាស្ដង់ដារ។ JWT ដែលរស់នៅយូរត្រូវបានលួច និងផ្ដល់ឡើងវិញ។
  3. ផ្ទៀងផ្ទាត់ claim audience (aud) នៅខាងទទួល។ Supabase, Firebase ល។ គួរត្រួតពិនិត្យថា aud ត្រូវនឹង service identifier ដែលរំពឹង។ ដោយគ្មាននេះ, JWT ដែលចេញសម្រាប់ service A អាច authenticate ទៅ service B។

ការតាមដានប្រតិបត្តិការ

Auth គឺជាប្រភព log សញ្ញាខ្ពស់បំផុតដែលអ្នកមាន។ មើលវា។

  1. ដាស់តឿនលើ spike ការចូលបរាជ័យក្នុង IP / ក្នុងគណនី។ អត្រាបរាជ័យធម្មតា 50× គឺជាការវាយប្រហារ credential-stuffing។ Clerk បញ្ចេញព្រឹត្តិការណ៍ទាំងនេះទៅ webhook; បញ្ជូនពួកវាទៅ SIEM របស់អ្នក។
  2. ការពិនិត្យប្រចាំត្រីមាសនៃការរសាត់ការកំណត់ session និង instance។ លំនាំដើមផ្លាស់ប្ដូរនៅពេល Clerk update; "ការកំណត់ចាស់" ស្ងាត់ៗក្លាយជាខុសតាមពេលវេលា។ Diff Dashboard JSON export ប្រឆាំងនឹងច្បាប់ចម្លងដែលគេស្គាល់-ល្អចុងក្រោយរបស់អ្នក។

ជំហានបន្ទាប់

ដំណើរការ FixVibe scan ប្រឆាំងនឹង URL ផលិតកម្មរបស់អ្នក — ការត្រួតពិនិត្យ baas.clerk-auth0 សម្គាល់ publishable key Clerk, test key នៅក្នុងផលិតកម្ម និង secret key ដែល bundled។ សម្រាប់បញ្ជីត្រួតពិនិត្យស្មើគ្នាលើ Auth0, សូមមើល បញ្ជីត្រួតពិនិត្យសុវត្ថិភាព Auth0។ សម្រាប់ទិដ្ឋភាពទូទៅនៅទូទាំង BaaS provider, សូមអាន BaaS misconfiguration scanner

// scan ផ្ទៃ baas របស់អ្នក

រកតារាងបើកចំហមុនពេលនរណាម្នាក់ផ្សេងទៀតរកឃើញ។

បញ្ចូល URL ផលិតកម្ម។ FixVibe រាប់ផ្គូផ្គង BaaS provider ដែលកម្មវិធីរបស់អ្នកនិយាយជាមួយ, fingerprint endpoint សាធារណៈរបស់ពួកគេ និងរាយការណ៍អ្វីដែល client មិនបាន authenticate អាចអាន ឬសរសេរ។ ឥតគិតថ្លៃ, គ្មានការដំឡើង, គ្មានកាត។

  • កម្រិតឥតគិតថ្លៃ — 3 scans/ខែ, គ្មានកាតចុះឈ្មោះ។
  • BaaS fingerprinting បែប passive — មិនត្រូវការការផ្ទៀងផ្ទាត់ domain។
  • Supabase, Firebase, Clerk, Auth0, Appwrite និងច្រើនទៀត។
  • AI fix prompt លើ finding នីមួយៗ — បិទភ្ជាប់ត្រឡប់ទៅក្នុង Cursor / Claude Code។
ដំណើរការ BaaS scan ឥតគិតថ្លៃ

មិនត្រូវការការចុះឈ្មោះ

បញ្ជីត្រួតពិនិត្យសុវត្ថិភាព Clerk៖ 20 ធាតុ — Docs · FixVibe