// docs / baas security / clerk hardening
Clerk təhlükəsizlik yoxlama siyahısı: 20 maddə
Clerk tətbiqiniz üçün auth, sessiyalar və təşkilatları idarə edir — bu o deməkdir ki, səhv konfiqurasiya edilmiş Clerk inteqrasiyası bir auth bypass, sessiya fixation vektoru və ya org-sızıntı yoludur. Bu yoxlama siyahısı açarlar, sessiya konfiqurasiyası, webhook-lar, təşkilatlar, JWT şablonları və davamlı monitorinq üzrə 20 maddəlik audit-dir. AI kodlaşdırma alətləri ağıllı standartlarla Clerk-i tez quraşdırır; bu siyahı onların buraxdığı maddələri tutur.
Auth-qatı səhv konfiqurasiyalarının niyə AI alət zəif nöqtəsi olduğuna dair fon məlumat üçün AI kodlaşdırma alətləri niyə təhlükəsizlik boşluqları buraxır-a baxın. Auth0-da paralel yoxlama siyahısı üçün Auth0 təhlükəsizlik yoxlama siyahısı-na baxın.
Mühit açarları və origin allowlist
Clerk layihə başına iki fərqli açar verir. Onları qarışdırmaq və ya sızdırmaq ilk uğursuzluq rejimidir.
- Brauzerdə yayımlanabilən açarı (produksiyada
pk_live_*, dev-dəpk_test_*) istifadə edin; serverdə yalnız sirr açarı (sk_live_*/sk_test_*) istifadə edin. Yayımlanabilən açarNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY-də təhlükəsizdir; sirr açarı heç vaxt ictimai env prefiksi daşımamalı və müştəri komponentində heç vaxt görünməməlidir. - Produksiya tətbiqinin
pk_test_*deyil,pk_live_*istifadə etdiyini yoxlayın. Test instansiyaları təsdiq edilməmiş e-poçt ünvanlarına və söndürülmüş MFA-ya icazə verir — test rejimini produksiyaya göndərmək auth bypass-dir. - Clerk Dashboard-da icazə verilən origin-ləri konfiqurasiya edin. Settings → Domains → Allowed origins produksiya domeninizi dəqiq sadalamalıdır. Boş və ya wildcard origin siyahıları, backend-inizlə danışan rogue Clerk frontend-ləri yaratmağa imkan verir.
- Hər hansı ayrılma və ya şübhəli sızıntıda sirr açarını rotasiya edin. Dashboard → API Keys → Reset. Köhnə açar etibarsız olur; rotasiyadan əvvəl server tərəfli kodu yeni dəyər ilə yenidən deploy edin.
Sessiya konfiqurasiyası
Sessiya bitmə müddəti və boş gözləmə zaman aşımları, oğurlanan sessiyanın 10 dəqiqəlik hadisə yoxsa 30 günlük hadisə olması arasındakı fərqdir.
- Həssas məlumat idarə edən SaaS tətbiqləri üçün sessiya boş gözləmə zaman aşımını 30 dəqiqə və ya daha az təyin edin. Dashboard → Sessions → Inactivity timeout. Bank-səviyyəli tətbiqlər 5-10 dəqiqə; standart SaaS 30-60 dəqiqə; istehlakçı tətbiqləri 1-7 gün istifadə etməlidir. Standart 7 gündür.
- Parol dəyişikliyində, e-poçt dəyişikliyində və MFA qeydiyyatında sessiya ləğv etməni aktivləşdirin. Dashboard → Sessions → Revoke on. Bunlar istifadəçi tərəfindən başladılan təhlükəsizlik hadisələridir; digər cihazlardakı mövcud sessiyalar öldürülməlidir.
- Sessiyaları yalnız giriş zamanı deyil, hər qorunan route-da server tərəfdə doğrulayın. Next.js-də: server komponenti / API route-da
const { userId } = await auth();cookie-dən JWT-ni oxuyur və onu doğrulayır. Heç vaxt yalnız cookie yoxlamasına etibar etməyin. - Sessiya cookie-sində
SameSite=Lax(standart) və yaStricttəyin edin. DevTools → Application → Cookies-də yoxlayın.SameSite=Nonebir CSRF vektorudur — cross-domain auth quraşdırması açıq şəkildə konfiqurasiya etmədikcə heç vaxt istifadə etməyin.
Webhook doğrulaması
Clerk webhook-ları istifadəçi həyat dövrü hadisələrində (yaradılıb, yenilənib, silinib, session.ended) işə düşür. Onlar verilənlər bazanızın sinxronizasiya mexanizmidir — və saxta bir webhook verilənlər bazasını yazma primitividir.
- Hər webhook-da Svix imzasını doğrulayın. Clerk webhook-ları Svix tərəfindən imzalanır.
new Webhook(secret).verify(body, headers)istifadə edin. Doğrulama uğursuz olarsa401ilə rədd edin. - Webhook sirrini mühit dəyişənində saxlayın, kodda heç vaxt yox. Sirr hər Dashboard regenerasiyasında rotasiya olur — sizin deploy onu sabitdən deyil, env-dən oxumalıdır.
- Hər handler-də idempotensiya. Webhook çatdırılmaları təkrarlana bilər. Dedupe üçün
webhook_eventscədvəlində primary key kimisvix-idbaşlığını istifadə edin. Vəziyyət dəyişikliyini və idempotensiya insert-ini eyni tranzaksiyada paketləyin. user.deleted-də 24 saat ərzində PII-ni hard-delete edin və ya anonimləşdirin. GDPR / CCPA bunu tələb edir. Silmə yolunu audit edin: bu istifadəçinin məlumatları hansı cədvəllərdə var? Mümkün olduqda FK ON DELETE CASCADE istifadə edin.
Təşkilatlar və icazələr
Clerk Organizations istifadə edirsinizsə, org sərhədi sizin kirayəçi təcrid sərhədinizdir. Hər server tərəfli sorğu onunla filtrlənməlidir.
- Hər API route-da
auth()-dan həmuserId, həm dəorgIdoxuyun və verilənlər bazası sorğularını hər ikisi ilə filtrləyin.WHERE org_id = $orgId AND user_id = $userId. Sorğu gövdəsindənorg_id-yə heç vaxt etibar etməyin. - <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.
- İki real org hesabı ilə cross-org təcridini test edin. Org A yaradın, məlumat doldurun, başqa bir brauzerdə Org B-yə daxil olun, API-dan Org A-nın məlumatlarını oxumağa cəhd edin. Cavab
403və ya404olmalıdır.
JWT şablonları və xarici inteqrasiyalar
JWT şablonları Clerk identifikasiyasını Supabase, Firebase və digər aşağı axın xidmətlərinə itələyir. Səhv konfiqurasiya edilmiş şablonlar iddiaları həddən artıq paylaşır və ya nəzərdə tutmadığınız məlumatları ifşa edir.
- Hər JWT şablonu üçün hər iddianı sadalayın və onun lazım olduğunu təsdiqləyin. Dashboard → JWT Templates. Supabase-ə
emailvəphonegöndərən bir şablon brauzerdə JWT-ni oxuyan hər kəsə PII-ni ifşa edir. - Müştəri tərəfli aşağı axın çağırışları üçün istifadə edilən JWT şablonlarında qısa bitmə müddəti təyin edin. Aşağı axın API sorğuları üçün 60 saniyə standartdır. Daha uzun yaşayan JWT-lər oğurlanır və təkrar oynadılır.
- Qəbul edən tərəfdə audience (
aud) iddiasını doğrulayın. Supabase, Firebase və s.aud-un gözlənilən xidmət identifikatoruna uyğun gəldiyini yoxlamalıdır. Bu olmadan, A xidməti üçün verilmiş bir JWT B xidmətinə identifikasiya edə bilər.
Əməliyyat monitorinqi
Auth sizin sahib olduğunuz ən yüksək siqnal log mənbəyidir. Onu izləyin.
- IP başına / hesab başına uğursuz-giriş artımları üzrə xəbərdarlıq verin. Normal uğursuzluq tezliyinin 50× qədər olması credential-stuffing hücumudur. Clerk bu hadisələri webhook-lara yayır; onları SIEM-inizə yönəldin.
- Sessiya və instansiya parametrlərinin sapmalarına rüblük baxış. Clerk yeniləndikcə standartlar dəyişir; "köhnə konfiqurasiyalar" zamanla sakitcə səhv olur. Dashboard JSON ixracını son məlum-yaxşı kopyanız ilə diff edin.
Sonrakı addımlar
Produksiya URL-inizə qarşı bir FixVibe skanı işlədin — baas.clerk-auth0 yoxlaması Clerk yayımlanabilən açarlarını, produksiyada test açarlarını və bundle-də sirr açarlarını işarələyir. Auth0-da eyni yoxlama siyahısı üçün Auth0 təhlükəsizlik yoxlama siyahısı-na baxın. BaaS provayderləri üzrə ümumi baxış üçün BaaS səhv konfiqurasiya skaneri oxuyun.
