PushizoDocs
Güvenlik & uyum

Güvenlik gözden geçirmesi — OWASP ASVS 4.0 (Seviye 2) kontrol listesi (Faz 14)

Tarih: 2026-10-13. Kapsam: API (apps/api), worker, dashboard, SDK uçları, veri katmanı. Her madde kodda doğrulanmış kanıta (dosya/test) bağlanır; "kısmi"/"açık" maddeler go-live öncesi GO_LIVE_CHECKLIST.md ile izlenir.…

Tarih: 2026-10-13. Kapsam: API (apps/api), worker, dashboard, SDK uçları, veri katmanı. Her madde kodda doğrulanmış kanıta (dosya/test) bağlanır; "kısmi"/"açık" maddeler go-live öncesi GO_LIVE_CHECKLIST.md ile izlenir. Harici pentest isteğe bağlıdır (plan 09 Faz 14) ve bu listeyi girdi olarak kullanır.

Durum: ✅ sağlanıyor · 🟡 kısmi/operasyonel koşul · ⬜ kapsam dışı (v2)

V1 Mimari ve tasarım

#KontrolDurumKanıt
1.1Tehdit modeli ve güvenlik gereksinimleri belgelenmiş✅docs/plan/08-guvenlik-ve-operasyon.md, ADR-0008 (anahtar kasası), ADR-0016 (SDK sahiplik kanıtı), ADR-0020 (kota/askıya alma)
1.4Erişim denetimi tek noktada uygulanır✅AuthGuard → RateLimitGuard → TenantGuard (APP_GUARD sırası, apps/api/src/app.module.ts); platform admin PlatformAdminGuard
1.5Girdi/çıktı sınırlarında şema doğrulaması✅Zod DTO'lar (nestjs-zod), ZodValidationPipe tüm gövde/sorgu parametrelerinde; hata zarfı AppExceptionFilter
1.9Gizli bilgiler kodda yok✅npm run ci:local secrets taraması (1132+ dosya), .env.example yalnızca yer tutucu

V2 Kimlik doğrulama

#KontrolDurumKanıt
2.1.1Parola uzunluk/politika✅passwordIssues (packages/auth/src/password.ts): en az PASSWORD_MIN_LENGTH karakter, en fazla 128, en az iki karakter sınıfı; AuthService.assertPasswordPolicy kayıt/değiştirme/sıfırlamada
2.1.7Parola karması: Argon2id✅packages/auth/src/password.ts (@node-rs/argon2)
2.2.1Kaba kuvvet koruması✅5 başarısız / 15 dk kilit + artan gecikme (LOCKOUT_MAX_FAILURES), IP bazlı @RateLimit(AUTH_RATE)
2.2.3Yeni cihaz/konum bildirimi✅new_login e-postası (establishSession)
2.5Parola sıfırlama: tek kullanımlık, süreli token, e-posta varlığı sızdırılmaz✅email_tokens (sha256, 1 saat), forgotPassword sabit yanıt
2.7–2.8MFA (TOTP + kurtarma kodları), org düzeyinde zorunlu kılma✅MfaService, organizations.settings.mfaRequired (TenantGuard), platform admin için zorunlu
2.9OAuth girişi: state + PKCE, doğrulanmış e-posta, geri dönüş URL'si yalnızca kendi alan adı✅OAuthService (state Redis 10 dk, S256, return_to yalnızca /…)
2.10Servis kimlik bilgileri (sağlayıcı anahtarları) şifreli, loglanmaz✅Envelope encryption (data_keys, MASTER_KEY), secret_enc; audit metadata maskeli

V3 Oturum yönetimi

#KontrolDurumKanıt
3.2Oturum belirteci opak, 256 bit, sunucu tarafında sha256✅SessionService.create (generateOpaqueToken(32))
3.3Çıkış ve zaman aşımı; mutlak yaş politikası✅kayan 14 gün, org sessionMaxHours, revokeAll, oturum listesi
3.4Çerez bayrakları✅httpOnly, secure (prod), SameSite=Lax (common/cookies.ts)
3.5API anahtarları: hash'li saklama, kapsam, IP izin listesi, rotasyon, anında iptal✅api_keys.key_hash, Redis revoked bayrağı, ip_allowlist, /rotate
3.7Yetki yükseltmede yeniden doğrulama (parola/MFA değişikliği)✅changePassword/mfa.disable mevcut parola + kod ister

V4 Erişim denetimi

#KontrolDurumKanıt
4.1.1Kiracı izolasyonu her sorguda + RLS✅TenantGuard org/app çözümlemesi (var olmayan → 404), TenantRlsInterceptor (istek başına set_config), tenant-isolation.int.test.ts + her faz testinde izolasyon vakası
4.1.3En az ayrıcalık rolleri✅packages/tenancy/src/roles.ts (owner…viewer, composer), API anahtarı kapsamları, plan rol kapısı
4.2.2CSRF✅double-submit (hs_csrf çerezi = x-csrf-token) /internal mutasyonlarında (http-hooks.ts), SameSite=Lax
4.3.1Yönetim arayüzü ayrı kimlik ve MFA✅/admin/v1 + is_platform_admin (yalnızca SQL/seed) + MFA; support session salt okunur ve denetlenir
4.3.3Askıya alınmış kiracı erişimi✅HS_ORG_SUSPENDED API/dashboard/SDK (phase13.int.test.ts)

V5 Doğrulama, temizleme ve kodlama

#KontrolDurumKanıt
5.1Pozitif doğrulama, boyut sınırları✅Zod şemaları (uzunluk/enum/regex), bodyLimit 1 MB (olay batch 5 MB, webhook 256 KB)
5.2.2HTML temizleme (e-posta/in-app içerikleri)✅MJML/Liquid render sunucuda, dashboard önizlemesi DOMPurify; in-app blok tabanlı (ham HTML yok)
5.2.6SSRF✅packages/webhooks/src/ssrf.ts (DNS çözümleme sonrası özel aralıklar, yönlendirme kapalı), journey webhook düğümü aynı kontrol, mock sağlayıcı dışında WEBHOOK_ALLOW_INSECURE_TARGETS yalnızca dev
5.3.3Çıktı kodlama (tercih merkezi/çıkış sayfaları)✅escapeHtml tüm dinamik alanlarda (tracking.service.ts), e-posta şablonları (mail/templates.ts)
5.3.4SQL enjeksiyonu✅Drizzle parametreli sorgular; ham sql şablonları yalnızca parametreli
5.5.2Güvenli JSON ayrıştırma✅Fastify JSON ayrıştırıcı + derinlik/boyut sınırı; webhook ham gövde yalnızca imza doğrulamasından sonra parse

V6–V8 Kriptografi, hata/log, veri koruma

#KontrolDurumKanıt
6.2Onaylı algoritmalar✅AES-256-GCM envelope (ADR-0008), HMAC-SHA256 imzalar (webhook, izleme, Stripe/iyzico), Argon2id, VAPID ES256
6.4Anahtar rotasyonu✅docs/runbooks/key-rotation.md, data_keys sürümleme
7.1Loglarda gizli bilgi yok; request_id✅pino redaksiyon, API istek logları yalnızca meta (api_request_logs), audit metadata maskeli (value_masked)
7.4Hata yanıtları iç ayrıntı sızdırmaz✅AppExceptionFilter → standart zarf (HS_INTERNAL genel mesaj, request_id)
8.1PII: hash'li arama, maskeli görüntüleme, export/log maskeleme✅token_hash, suppression özetleri, a***e@example.com; KVKK/GDPR silme ve dışa aktarma (privacy.int.test.ts)
8.3.4Veri saklama süreleri✅retention işi (plan limiti retention_days), partition düşürme

V9–V10 İletişim ve kötü amaçlı kod

#KontrolDurumKanıt
9.1TLS; HSTS🟡HSTS başlığı prod'da (http-hooks.ts); TLS sonlandırma infra/compose nginx/caddy (go-live'da sertifika)
10.3Bağımlılık taraması✅npm audit --audit-level=high (ci:local audit: high=0, critical=0), lockfile commit'li; CI ci.yml

V12–V14 Dosya, API, yapılandırma

#KontrolDurumKanıt
12.1Dosya yükleme sınırları (CSV import, medya)✅import multipart boyut sınırı, MIME/boyut kontrolü, S3 imzalı URL 24 sa
13.1API: yetkilendirme, hız sınırı, idempotency✅kapsam/izin guard'ları, token-bucket (plan bazlı api_rps), Idempotency-Key 24 sa
13.2Webhook alıcıları imza doğrular✅SNS/Svix/Twilio/Stripe/iyzico/mock imzaları, ham gövde, zaman toleransı
14.4Güvenlik başlıkları✅API: x-content-type-options, referrer-policy, permissions-policy, x-frame-options, HSTS; dashboard: CSP (next.config.ts), aynı başlıklar
14.5CORS✅/sdk origin kontrolü (allowed_origins), dashboard yalnızca APP_URL
14.2Üretim yapılandırması ve bağımlılıklar✅NODE_ENV=production açılış kontrolleri: mock faturalama reddedilir, mock sağlayıcı yalnızca ALLOW_MOCK_PROVIDERS=true (staging), WEBHOOK_ALLOW_INSECURE_TARGETS açılamaz, MASTER_KEY zorunlu, uygulama DB rolü süper kullanıcı/BYPASSRLS olamaz (assertRlsEnforced); bağımlılıklar: Dependabot (npm, Actions, Docker, Gradle, Maven, NuGet, pip, Bundler, Composer, Go, pub), npm audit --audit-level=high (ci:local), gitleaks git geçmişi taraması (CI)

Açık / kapsam dışı

  • Harici penetrasyon testi (isteğe bağlı; bu liste girdi).
  • SSO (SAML/OIDC), JWT identity verification modu — v2 (ADR-0017).
  • WAF/bot koruması — altyapı katmanı (go-live).

Bu sayfada