Dijital dönüşümün hız kesmeden ilerlediği günümüzde web uygulamaları, bireylerin ve kurumların hayatının ayrılmaz bir parçası hâline gelmiştir. Bankacılık işlemlerinden sağlık hizmetlerine, e-ticaretten devlet portallarına kadar pek çok kritik süreç artık tarayıcı üzerinden yürütülmektedir. Bu yaygınlaşma, söz konusu uygulamaları siber saldırganların birincil hedefi konumuna taşımaktadır. Veri ihlalleri, kimlik hırsızlığı ve sistem ele geçirme girişimleri her geçen yıl artarken yalnızca 2023 yılında küresel ölçekte web uygulamalarına yönelik saldırıların bir önceki yıla kıyasla yüzde otuzdan fazla arttığı raporlanmaktadır. Bu tablo, web uygulama güvenliğini artık bir tercih değil, zorunluluk olarak öne çıkarmaktadır. İslam filozofu İbn Rüşd’ün “Bir şeyi korumak, onu inşa etmek kadar değerlidir.” anlayışından hareketle, dijital varlıklarımızı da inşa ettiğimiz özenle korumalıyız. Aşağıda, her ölçekten geliştirici ve kurumun benimsemesi gereken on temel güvenlik uygulaması kapsamlı biçimde ele alınmaktadır.
1. HTTPS ve Güçlü Şifreleme Protokollerini Zorunlu Kılın
Web güvenliğinin ilk ve en görünür katmanı, iletişimin şifrelenmesidir. HTTPS (HyperText Transfer Protocol Secure), sunucu ile istemci arasındaki veri trafiğini TLS (Transport Layer Security) protokolü aracılığıyla şifreleyerek dinleme ve araya girme saldırılarını engeller. Bugün hâlâ HTTP üzerinden hizmet veren uygulamalar, kullanıcı kimlik bilgilerini ve oturum çerezlerini açık metin olarak iletmekte; bu durum “man-in-the-middle” saldırılarına açık kapı bırakmaktadır.
Yalnızca HTTPS’e geçiş yeterli değildir; TLS 1.2 ve üzeri sürümler kullanılmalı, eski ve güvensiz protokoller olan SSL ve TLS 1.0/1.1 devre dışı bırakılmalıdır. HSTS (HTTP Strict Transport Security) başlığı etkinleştirilerek tarayıcıların yalnızca güvenli bağlantıları kabul etmesi sağlanmalıdır. Sertifika otoritesinin güvenilirliği de göz ardı edilmemeli, Let’s Encrypt gibi tanınan sağlayıcılardan alınan sertifikaların düzenli olarak yenilenmesi takip edilmelidir.
2. Giriş Doğrulama ve Çıktı Kodlaması ile Enjeksiyon Saldırılarını Engelleyin
SQL enjeksiyonu, komut enjeksiyonu ve XSS (Cross-Site Scripting) saldırıları, OWASP’ın her yıl yayımladığı en kritik on güvenlik açığı listesinin tepesinde yer almaya devam etmektedir. Bu saldırıların ortak noktası, uygulamanın kullanıcıdan aldığı veriyi doğrulamadan işlemesidir.
Giriş doğrulama, kullanıcının sağladığı her türlü verinin beklenen format, tür ve uzunlukta olup olmadığını kontrol etmeyi kapsar. “Hiçbir kullanıcı girdisine güvenme” ilkesi burada temel kural olmalıdır. SQL sorgularında parametreli sorgular (prepared statements) veya ORM (Object-Relational Mapping) araçları kullanılmalı; ham sorgu birleştirmesinden kaçınılmalıdır. Kullanıcı verileri HTML çıktısına yansıtılmadan önce mutlaka kodlanmalı (encode), böylece tarayıcının veriyi kod olarak yorumlaması engellenmelidir. Sunucu tarafı doğrulama, istemci tarafı doğrulamayla desteklenmeli; ancak asla yalnızca istemciye güvenilmemelidir.
3. Güçlü Kimlik Doğrulama ve Çok Faktörlü Kimlik Doğrulama Uygulayın
Kimlik doğrulama zafiyetleri, veri ihlallerinin büyük çoğunluğunun arkasında yatan nedendir. Zayıf parola politikaları, varsayılan kimlik bilgileri ve tek faktörlü kimlik doğrulama sistemleri saldırganlar için kapıyı ardına kadar açık bırakmaktadır.
Güvenli kimlik doğrulama için şifrelerin veritabanında düz metin olarak asla saklanmaması, bunun yerine bcrypt, Argon2 veya PBKDF2 gibi güvenli hash algoritmaları kullanılması şarttır. Parola politikası en az sekiz karakter, büyük-küçük harf, rakam ve özel karakter kombinasyonunu zorunlu kılmalıdır. Çok faktörlü kimlik doğrulama (MFA), özellikle yönetici panelleri ve hassas işlemler için olmazsa olmaz hâle gelmiştir. TOTP (Time-Based One-Time Password) tabanlı uygulamalar veya donanım güvenlik anahtarları bu süreçte tercih edilmelidir. Hesap kilitleme mekanizmaları, kaba kuvvet saldırılarına karşı ek bir güvence katmanı sağlar.
4. Yetkilendirme Kontrollerini Titizlikle Uygulayın
Kimlik doğrulama, sisteme kimin girdiğini belirlerken yetkilendirme, girilen kişinin ne yapabileceğini belirler. Bu ikisini birbirine karıştırmak, ciddi güvenlik açıklarına yol açmaktadır. IDOR (Insecure Direct Object Reference) saldırıları, kullanıcının yalnızca URL veya parametre manipülasyonu ile başka kullanıcıların verilerine erişebildiği senaryolarda ortaya çıkar.
En az ayrıcalık ilkesi her kullanıcıya ve servise yalnızca görevi için gereken minimum yetki atanmasını öngörür. Rol tabanlı erişim kontrolü (RBAC) veya öznitelik tabanlı erişim kontrolü (ABAC) modelleri uygulanmalı; her kritik işlem için sunucu tarafında yetki kontrolü tekrar yapılmalıdır. Yetkilendirme mantığının yalnızca istemci tarafında uygulanması, güvenliğin yalnızca görünüşte var olması anlamına gelir.
5. Güvenli Oturum Yönetimini Hayata Geçirin
Oturum yönetimi, kimliği doğrulanmış bir kullanıcının sistemi kullanmaya devam ederken güvenliğinin sürdürülmesini sağlar. Oturum ele geçirme (session hijacking) saldırıları, çalınan çerezler aracılığıyla meşru kullanıcının kimliğine bürünmeyi hedefler.
Oturum kimlikleri kriptografik olarak güçlü rastgele değerlerden oluşturulmalı, tahmin edilebilir sıralı değerler kullanılmamalıdır. Çerezlerde HttpOnly ve Secure bayrakları mutlaka etkinleştirilmeli; SameSite özelliği CSRF saldırılarına karşı ek koruma sağlamak üzere yapılandırılmalıdır. Oturum süresi belirli bir hareketsizlik süresinin ardından otomatik olarak sona ermeli, kullanıcı çıkış yaptığında oturum sunucu tarafında da geçersiz kılınmalıdır.
6. Güvenlik Başlıklarını Yapılandırın
HTTP güvenlik başlıkları, tarayıcıya uygulamanın nasıl davranmasını beklediğini bildiren ve pek çok yaygın saldırı vektörünü tek satır yapılandırmayla engelleyen güçlü bir araçtır. Maalesef pek çok uygulama bu başlıkları hâlâ ihmal etmektedir.
Content Security Policy (CSP), tarayıcının hangi kaynaklardan içerik yükleyebileceğini tanımlar ve XSS saldırılarına karşı güçlü bir bariyer oluşturur. X-Frame-Options, sitenin başka siteler tarafından iframe içinde gömülmesini önleyerek clickjacking saldırılarını engeller. X-Content-Type-Options: nosniff, tarayıcının MIME tipi algılamasını devre dışı bırakarak içerik tipi karıştırma saldırılarını önler. Referrer-Policy, kullanıcıların gezinme geçmişine ilişkin bilgilerin üçüncü taraflara sızmasını sınırlar. Bu başlıkların tümünü doğru biçimde yapılandırmak, minimum maliyetle maksimum koruma sağlayan en verimli güvenlik adımlarından birini oluşturur.
7. Bağımlılıkları ve Üçüncü Taraf Kütüphaneleri Güncel Tutun
Modern web uygulamaları, yüzlerce açık kaynak kütüphane ve çerçeve üzerine inşa edilmektedir. Bu bağımlılıklardaki güvenlik açıkları, uygulamanızı doğrudan riske atabilir. Tedarik zinciri saldırıları (supply chain attacks), son yıllarda dramatik biçimde artmış ve büyük ölçekli ihlallere neden olmuştur.
npm audit, Dependabot veya Snyk gibi otomatik bağımlılık tarama araçları kullanılarak kritik güvenlik açıkları içeren paketler proaktif biçimde tespit edilmelidir. Bağımlılıklar düzenli aralıklarla güncellenmeli; ancak her güncelleme öncesinde değişiklik notları incelenmeli ve kapsamlı testler yürütülmelidir. Uygulamada kullanılmayan kütüphaneler kaldırılarak saldırı yüzeyi daraltılmalıdır. Paket bütünlüğü doğrulaması için lock dosyaları (package-lock.json, yarn.lock) versiyon kontrolüne dahil edilmelidir.
8. Kapsamlı Günlük Tutma ve İzleme Altyapısı Kurun
Bir güvenlik olayını fark etmek, zararın boyutunu doğrudan etkiler. Günlük tutma (logging) ve gerçek zamanlı izleme, hem saldırı girişimlerinin erken tespitini hem de bir ihlal sonrası adli analizi mümkün kılar.
Başarısız oturum açma denemeleri, yetkilendirme hataları, olağandışı API istekleri ve kritik işlem günlükleri mutlaka kaydedilmelidir. Ancak günlüklerde parola, kredi kartı numarası veya kişisel veri gibi hassas bilgilerin asla yer almaması sağlanmalıdır. Merkezi log yönetim sistemleri (ELK Stack, Splunk vb.) anormal davranış kalıplarını otomatik olarak tespit edebilir ve uyarı üretebilir. WAF (Web Application Firewall) entegrasyonu, bilinen saldırı imzalarına karşı gerçek zamanlı koruma sağlar.
9. Güvenli Geliştirme Yaşam Döngüsünü Benimseyin
Güvenlik, yalnızca yayına alma öncesinde düşünülmesi gereken bir kontrol listesi değil; geliştirme sürecinin her aşamasına entegre edilmesi gereken bir kültür ve metodoloji sorunudur. DevSecOps yaklaşımı, güvenliği geliştirme (Dev) ve operasyon (Ops) süreçleriyle bütünleştirir.
Tehdit modellemesi, geliştirmenin tasarım aşamasında yapılmalı; olası saldırı vektörleri erken tespit edilerek mimari kararlar buna göre şekillendirilmelidir. Statik uygulama güvenlik testleri (SAST) kod gözden geçirme sürecine, dinamik uygulama güvenlik testleri (DAST) ise CI/CD boru hattına entegre edilmelidir. Düzenli sızma testleri ve hata ödül programları, gerçek dünya saldırı senaryolarının simüle edilmesine olanak tanır. Geliştiricilerin güvenlik bilincini artırmaya yönelik düzenli eğitimler, teknik önlemleri insan boyutuyla tamamlar.
10. Veri Minimizasyonu ve Güvenli Veri Saklama İlkelerini Uygulayın
“Toplamadığınız veriyi çalamazlar.” Bu basit ilke, veri güvenliğinin belki de en sağlam temelidir. Pek çok uygulama, işlev için gerekli olmayan verileri toplamakta ve saklamakta; bu durum bir ihlal yaşandığında maruziyet alanını gereksiz yere genişletmektedir.
Kişisel veri toplanırken açık rıza alınmalı ve yalnızca hizmet için gerçekten ihtiyaç duyulan veriler işlenmelidir. Ödeme bilgileri gibi hassas veriler asla düz metin olarak saklanmamalı; PCI DSS gibi sektör standartlarına uyulmalıdır. Veritabanı şifrelemesi, AES-256 gibi güçlü algoritmalar kullanılarak uygulanmalıdır. Saklama süreleri politika olarak belirlenmeli ve ihtiyaç kalmayan veriler güvenli biçimde silinmelidir. Yedekleme dosyaları da aynı güvenlik standartlarıyla korunmalı ve düzenli olarak test edilmelidir.
Sık Sorulan Sorular
Web uygulama güvenliği testleri ne sıklıkla yapılmalıdır?
Güvenlik testleri en az yılda bir kez kapsamlı sızma testi şeklinde yapılmalı; her büyük kod değişikliği veya yeni özellik eklemesinde ise otomatik güvenlik taramaları çalıştırılmalıdır. Sürekli izleme ise kesintisiz devam etmelidir.
Küçük ölçekli web uygulamaları da bu önlemlere ihtiyaç duyar mı?
Evet, kesinlikle. Saldırganlar kurbanları çoğunlukla boyutlarına göre seçmez; aksine güvenlik açıklarına göre seçer. Küçük uygulamalar zaman zaman daha büyük sistemlere sızmak için atlama taşı olarak kullanılmaktadır. Temel güvenlik önlemleri her ölçekteki uygulama için zorunludur.
OWASP Top 10 listesi nedir ve neden önemlidir?
OWASP (Open Web Application Security Project) tarafından yayımlanan bu liste, her yıl gerçek dünya verilerine dayanılarak güncellenen en kritik on web uygulama güvenlik riskini sıralamaktadır. Geliştiriciler, güvenlik profesyonelleri ve yöneticiler için evrensel bir referans noktası niteliği taşımakta ve güvenlik önceliklerinin belirlenmesinde temel yol haritası işlevi görmektedir.
SQL enjeksiyonu hâlâ gerçek bir tehdit midir?
Onlarca yıllık bir saldırı vektörü olmasına karşın SQL enjeksiyonu, bugün de dünya genelinde en yaygın ve en yıkıcı web güvenlik açıkları arasındadır. Yanlış yapılandırılmış uygulamalar, eski kodlar ve güvenlik eğitimi almamış geliştiriciler bu tehdidi güncelliğini korur hâlde tutmaktadır.
İki faktörlü kimlik doğrulama (2FA) uygulamak zor mudur?
Hayır. Google Authenticator, Authy gibi TOTP tabanlı uygulamalarla entegrasyon, çoğu geliştirme çerçevesinde birkaç saatlik bir iş yüküne karşılık gelir. Pek çok hazır kütüphane ve SaaS kimlik doğrulama hizmeti (Auth0, Firebase Authentication vb.) bu süreci daha da kolaylaştırmaktadır. Sağladığı güvenlik artışına kıyasla maliyeti son derece düşüktür.
İleri Okuma Tavsiyeleri ve Kaynaklar
- OWASP Top Ten Project — owasp.org/www-project-top-ten (Web uygulama güvenliğinin evrensel referans kılavuzu)
- “The Web Application Hacker’s Handbook” — Stuttard & Pinto (Web güvenliği açıklarını derinlemesine anlatan kapsamlı kaynak)
- Mozilla Web Security Guidelines — infosec.mozilla.org/guidelines/web_security (Pratik güvenlik başlıkları ve yapılandırma rehberi)








