Web uygulamalarının gelişmesiyle birlikte güvenlik, artık sadece backend tarafının değil; frontend framework’lerinin de ciddi bir sorumluluğu haline geldi. Özellikle kullanıcı verilerinin işlendiği, giriş-çıkış işlemlerinin yapıldığı veya ödeme gibi kritik süreçlerin yönetildiği sistemlerde güvenliğe önem vermek bir zorunluluktur. React tabanlı Next.js uygulamaları da bu noktada güvenlik açısından dikkat edilmesi gereken çeşitli başlıklar sunar. Peki Next.js ile geliştirilen uygulamalarda güvenliğimizi nasıl sağlayabiliriz? İşte detaylar…
- 🔐 1. SSR ve Güvenlik İlişkisi
- 🧱 2. API Routes Kullanırken Yetkilendirme
- 🧼 3. XSS (Cross Site Scripting) Saldırılarına Karşı Önlem
- 📦 4. CSRF (Cross-Site Request Forgery) Koruması
- 🧱 5. Güvenli Cookie Yönetimi
- 🔍 6. Güvenli Header Kullanımı
- ✅ 7. Üçüncü Parti Paket Güvenliği
- 🔒 8. Rate Limiting ve Brute Force Koruması
- Sonuç: Güvenlik Bir Lüks Değil, Gerekliliktir
🔐 1. SSR ve Güvenlik İlişkisi
Next.js, SSR (Sunucu Taraflı Render) özelliğiyle birlikte bazı içerikleri sunucuda çalıştırarak render eder. Bu da bazı hassas verilerin istemciye ulaşmadan önce işlenmesini mümkün kılar. Ancak dikkatli olunmadığında, istemciye sızabilecek hassas veriler birer açık haline gelebilir.
Ne Yapılmalı?
getServerSidePropsfonksiyonunda kullanılan verileri dikkatle kontrol edin. Hassas veriler (token, kullanıcı ID’si, şifre vb.) asla istemciye JSON içinde gönderilmemelidir.- Yalnızca kullanıcıya gösterilmesi gereken veriler gönderilmeli, diğer işlemler API endpoint’leri üzerinden yapılmalıdır.
🧱 2. API Routes Kullanırken Yetkilendirme
Next.js, backend ihtiyaçları için /pages/api/ klasörü altında API endpoint’leri oluşturma imkânı sunar. Ancak bu endpoint’ler doğru yapılandırılmazsa, herkesin erişebileceği açık kapılara dönüşebilir.
Ne Yapılmalı?
- Her API endpoint’inde mutlaka kullanıcı doğrulama (authentication) ve yetkilendirme (authorization) kontrolleri yer almalı.
- JWT, session ya da cookie tabanlı oturum yönetimi entegre edilmeli.
- Public olarak açık olması gereken API’ler dışında kalan tüm endpoint’ler token kontrolüyle koruma altına alınmalı.
🧼 3. XSS (Cross Site Scripting) Saldırılarına Karşı Önlem
React, varsayılan olarak XSS saldırılarına karşı korumalıdır. Ancak bazı durumlarda dangerouslySetInnerHTML gibi özellikler kullanıldığında açıklar oluşabilir. Next.js uygulamalarında bu tür kullanımlardan özellikle kaçınılmalıdır.
Ne Yapılmalı?
- Kullanıcıdan gelen HTML içeriklerini asla doğrudan render etmeyin.
- Eğer mecburen
dangerouslySetInnerHTMLkullanılacaksa, içerikler sanitize edilmeli (örneğin DOMPurify gibi kütüphanelerle). - Form girişleri ve query parametreleri üzerinde filtreleme yapılmalı.
📦 4. CSRF (Cross-Site Request Forgery) Koruması
Next.js’in varsayılan yapısı CSRF koruması sunmaz. Ancak özellikle form işlemlerinde veya ödeme gibi hassas endpoint’lerde CSRF saldırılarına karşı savunma mekanizmaları kurulmalıdır.
Ne Yapılmalı?
csrf-tokensistemini kullanarak, form gönderimlerinde token doğrulama yapabilirsiniz.NextAuth.jsgibi yetkilendirme kütüphaneleriyle gelen CSRF koruması kullanılabilir.- API endpoint’lerine gelen POST isteklerinde kaynak doğrulama yapılmalı.
🧱 5. Güvenli Cookie Yönetimi
Next.js ile oturum açma işlemleri sırasında kullanılan JWT veya session bilgileri genellikle cookie içinde tutulur. Bu noktada cookie yapılandırması çok önemlidir.
Ne Yapılmalı?
- Cookie’leri
HttpOnly,Secure,SameSite=Strictgibi parametrelerle koruma altına alın. - Client tarafında erişilmemesi gereken bilgileri
HttpOnlyolarak işaretleyin. - HTTPS üzerinden çalışmıyorsanız
Securecookie’ler tarayıcı tarafından gönderilmez.
🔍 6. Güvenli Header Kullanımı
Next.js projelerinde Security Header’lar (CSP, X-Frame-Options, X-Content-Type-Options vs.) doğrudan next.config.js dosyası içinde tanımlanabilir. Bu başlıklar tarayıcının güvenlik seviyesini artırır.
Ne Yapılmalı?
Content-Security-Policyile hangi kaynaklardan veri yüklenebileceğini sınırlayın.X-Frame-Options: DENYile clickjacking saldırılarını engelleyin.Referrer-Policy,Strict-Transport-Security,X-XSS-Protectiongibi header’lar da eklenmeli.
✅ 7. Üçüncü Parti Paket Güvenliği
Next.js projelerinde sıkça üçüncü parti kütüphaneler kullanılır. Ancak bu paketlerin güvenliği de projenin güvenliğini doğrudan etkiler.
Ne Yapılmalı?
- Sadece güvenilir kaynaklardan gelen, düzenli güncellenen kütüphaneler kullanılmalı.
npm auditkomutu ile düzenli olarak açıklar kontrol edilmeli.- Kullanılmayan bağımlılıklar projeden çıkarılmalı.
🔒 8. Rate Limiting ve Brute Force Koruması
Eğer API endpoint’leriniz herkese açık bir şekilde istek alıyorsa, brute-force saldırılara maruz kalabilirsiniz. Özellikle login sistemlerinde bu büyük bir risktir.
Ne Yapılmalı?
- Rate limiting uygulayan
express-rate-limitveyanext-rate-limitgibi paketlerle API endpoint’leri koruma altına alın. - CAPTCHA entegrasyonu, girişlerde bot koruması sağlar.
Sonuç: Güvenlik Bir Lüks Değil, Gerekliliktir
Next.js, modern yapısı ve sunduğu olanaklarla güçlü ve performanslı web uygulamaları geliştirmenize imkân tanır. Ancak bu gücün sürdürülebilir olması için güvenlik uygulamalarıyla desteklenmesi gerekir. Doğru yapılandırmalar, güvenli kodlama alışkanlıkları ve sürekli kontrol sayesinde, Next.js projeleriniz hem performanslı hem de güvenli olabilir.
