Startup Güvenlik Başlangıç Rehberi
27 Şubat 2026
OWASP Top 10'dan secret yönetimine, dependency scanning'den pen test zamanlamasına kadar startup güvenlik temellerini anlatan pratik rehber.
OWASP Top 10 Startup İçin
OWASP Top 10 2021 listesinde ilk sırayı Broken Access Control alıyor: kullanıcıların sadece kendi verilerine erişebildiğini doğrulayan her endpoint'in test edilmemiş kalması, startuplarda en sık karşılaşılan güvenlik açığıdır. /api/users/123/data gibi bir endpoint'i 124 ile çağırınca farklı kullanıcının verisi döndürülüyorsa bu kritik bir access control hatasıdır. Row Level Security (Supabase) veya middleware düzeyinde yetki kontrolü bu riski kapatmanın iki pratik yoludur.
İkinci sıradaki Cryptographic Failures ise hassas verilerin şifresiz saklanmasını ve düzensiz şifreleme kullanımını kapsar: şifreler bcrypt veya Argon2 ile hash'lenmeli, plain text asla saklanmamalı. Injection (üçüncü sıra) parametreli sorgular veya ORM kullanarak kolayca önlenebilir; ham SQL string interpolasyonu her zaman SQL injection kapısı açık bırakır. Bu üç maddeyi ilk sprint'te ele almak, sonradan keşfedilen açıkların çok daha yüksek maliyetinin önüne geçer.
Secret Yönetimi
.env dosyaları asla Git repository'sine commit edilmemelidir. .gitignore dosyasına .env, .env.local, .env.production girişlerini ekle; daha sonra git-secrets veya pre-commit hook'u ile commit anında kontrol ekle. Yanlışlıkla commit edilmiş bir secret için git filter-branch veya BFG Repo Cleaner ile geçmişten temizlemek yeterli değildir: o anahtarın hemen iptal edilip yenisiyle değiştirilmesi zorunludur çünkü Git geçmişi fork'larda ve cache'lerde kalabilir.
Üretimde secret'ları kod tabanından tamamen ayır. Vercel veya Railway'in environment variable paneli basit projeler için yeterlidir; daha karmaşık yapılarda AWS Secrets Manager otomatik rotation ve ince izin kontrolü sunar. HashiCorp Vault en kapsamlı çözümdür ama yönetim maliyeti yüksektir; 5 kişilik bir ekip için overkill. Hangi aracı seçersen seç, secret'ları sadece bilen ekip üyeleriyle sınırlı tut ve her çalışan ayrılışında kullandığı anahtarları rotate et.
Dependency Scanning
npm audit bağımlılıklardaki bilinen güvenlik açıklarını saniyeler içinde listeler ve her açık için CVSS puanı gösterir. CI pipeline'a npm audit --audit-level=high komutu eklemek, yüksek önem puanlı açık içeren bir bağımlılıkla build alınmasını engeller. Bunu bir kez kurmak, büyük güvenlik haberlerine sürpriz yakalanma riskini önemli ölçüde azaltır.
Snyk ücretsiz tier'ı bağımlılık açıklarını otomatik olarak tespit edip Pull Request açar; geliştiricinin manuel tarama yapmasına gerek kalmaz. GitHub Advanced Security, public repository'lerde ücretsiz olarak hem secret scanning hem de kod analizi yapıyor. Bir API anahtarı veya credential yanlışlıkla push edildiğinde GitHub anında e-posta uyarısı gönderir; bu uyarıyı ciddi al ve birkaç dakika içinde anahtarı iptal et. Açık kayıt süresi ile istismar girişimi arasındaki pencere bazen saatlerle değil, dakikalarla ölçülüyor.
Ne Zaman Pen Test
Penetrasyon testi her startup için anlamlı bir güvenlik yatırımıdır; ancak zamanlaması önemlidir. İlk ödeme işlemini gerçekleştirmeden önce temel güvenlik testini yap: kendi kodun üzerinde OWASP ZAP veya Burp Suite Community ile tarama, npm audit ve dependency review, access control testleri. Bu "iç tarama" bir uzmana gerek duymadan yapabileceğin ilk savunma katmanıdır.
10.000 aktif kullanıcıya ulaşmadan önce veya kurumsal müşteri kazanmak istediğinde harici penetrasyon testi değerli hale gelir. HackerOne veya Bugcrowd üzerinde bug bounty programı açmak, hackerları sürekli ücreti yerine yalnızca bulgu başına ödeyerek çalıştırmak anlamına gelir; bu ölçekte yaygın kullanılan bir güvenlik mekanizmasıdır. Tam kapsamlı bir pen test 20.000–80.000 TL aralığındadır; belirli bir uyum sertifikasyonu (SOC 2, ISO 27001) gerekmedikçe erken aşamada bu yatırım büyük olasılıkla bekleyebilir.
Sık Sorulan Sorular
HTTPS'i nasıl ve nerede zorunlu kılarım? Vercel ve Railway otomatik HTTPS sağlar. Kendi sunucunda Nginx veya Caddy ile SSL terminasyonu yapılır; Let's Encrypt ücretsiz sertifika sunar. HTTP trafiğini HTTPS'e yönlendiren redirect 301 kodu ile middleware veya web sunucu konfigürasyonunda kur.
Kullanıcı şifrelerini nasıl saklamalıyım? Bcrypt (iş faktörü 12+) veya Argon2id kullan. NextAuth.js veya Auth0 gibi auth kütüphaneleri bu işlemi sizin için doğru yapar; kendi şifre hash mekanizmanı yazmaktan kaçın. Plain text ve MD5/SHA1 kesinlikle kabul edilemez.
Rate limiting neden önemli?
Kaba kuvvet saldırılarına (brute force) ve credential stuffing'e karşı kritik bir savunmadır. Login endpoint'inde IP başına 5 başarısız deneme sonrası geçici engel uygula; Next.js'te upstash/ratelimit veya middleware ile birkaç satırda kurabilirsin.
GDPR ve KVKK uyumu güvenlikle nasıl ilişkili? Her ikisi de kişisel verinin güvenli saklanmasını ve yetkisiz erişime karşı korunmasını zorunlu kılar. Güvenlik ihlali yaşanırsa yasal bildirim yükümlülüğü başlar; Türkiye'de KVKK kapsamında veri ihlali 72 saat içinde Kurula bildirilmeli.
Güvenlik açığı raporlayan birini nasıl yönetirsiniz?
Web sitende security.txt veya security@ e-posta adresiyle güvenlik açığı bildirme kanalı oluştur. Raporlayan kişiye 48 saat içinde yanıt ver, açığı doğrula ve düzelt, düzeltme sonrası teşekkür et. Bu davranış hem güven hem de tekrarlayan raporlama teşviki oluşturur.