Web Uygulamalarında Temel Güvenlik Önlemleri: OWASP Rehberiyle Başlangıç
OWASP Top 10 listesini referans alarak web uygulamalarınızı en yaygın güvenlik açıklarına karşı nasıl koruyabileceğinizi anlattım.
Bir web uygulaması geliştirdiğinizde aklınızdaki tek şey "çalışıyor mu?" sorusu olmamalı. "Güvenli mi?" sorusu da en az o kadar kritik. Özellikle üretime aldığınız anda uygulama artık bir hedef haline geliyor. Bu yazıda OWASP (Open Worldwide Application Security Project) rehberini temel alarak web uygulamalarında alınması gereken temel güvenlik önlemlerini ele alacağım.
OWASP Nedir, Neden Önemlidir?
OWASP, web uygulama güvenliğini iyileştirmek için çalışan kar amacı gütmeyen bir topluluktur. Her birkaç yılda bir güncellenen OWASP Top 10 listesi, dünyada en sık karşılaşılan güvenlik açıklarını sıralıyor. Bu listeye hâkim olmak, güvenli yazılım geliştirmenin alfabesini öğrenmek gibidir.
1. Injection (Enjeksiyon) Saldırıları
SQL Injection hâlâ en yaygın saldırı vektörlerinden biri. Kullanıcıdan gelen veriyi doğrudan sorguya eklemek felaket davet etmektir.
Ne yapmalısınız?
- Parametreli sorgular (Prepared Statements) kullanın.
- ORM araçlarını tercih edin, ham SQL'den kaçının.
- Kullanıcı girdilerini her zaman doğrulayın ve temizleyin (sanitize).
2. Kimlik Doğrulama Hataları (Broken Authentication)
Zayıf şifre politikaları, oturum token'larının hatalı yönetimi veya çok faktörlü doğrulamanın (MFA) olmaması uygulamanızı kolayca ele geçirilebilir kılar.
Ne yapmalısınız?
- Parola saklarken bcrypt veya argon2 gibi güçlü hashing algoritmaları kullanın.
- Oturum token'larını giriş sonrası yenileyin.
- MFA desteği ekleyin; bu artık bir lüks değil, standart.
3. XSS (Cross-Site Scripting)
Saldırganlar, kötü amaçlı JavaScript kodunu sayfaya enjekte ederek kullanıcı verilerini çalabilir.
Ne yapmalısınız?
- Kullanıcıdan gelen içeriği HTML'e gömerken mutlaka encode edin.
- Content Security Policy (CSP) başlığı ekleyin.
- Modern frontend framework'leri (React, Vue) büyük ölçüde bunu otomatik halleder ama yine de dikkatli olun.
4. Güvensiz Doğrudan Nesne Referansları (IDOR)
Bir kullanıcı /api/orders/1234 yerine /api/orders/1235 yazarak başkasının verisine ulaşabiliyorsa ciddi bir IDOR açığınız var demektir.
Ne yapmalısınız?
- Her API isteğinde yetki kontrolü yapın.
- Tahmin edilebilir ID'ler yerine UUID kullanmayı değerlendirin.
- Nesne sahipliğini sunucu tarafında doğrulayın.
5. Güvenlik Yapılandırma Hataları
Default şifreler, gereksiz açık portlar, hata mesajlarında stack trace göstermek — bunların hepsi saldırganlar için kapı aralıyor.
Ne yapmalısınız?
- Prodüksiyon ortamında hata detaylarını kullanıcıya asla göstermeyin, loglayın.
- Kullanmadığınız servisleri ve portları kapatın.
- HTTP güvenlik başlıklarını (
X-Frame-Options,Strict-Transport-Securityvb.) etkinleştirin.
6. Güncel Olmayan Bağımlılıklar
Kullandığınız kütüphanelerin bilinen açıkları varsa uygulamanız da savunmasızdır.
Ne yapmalısınız?
- Dependabot, Snyk veya OWASP Dependency-Check gibi araçlarla bağımlılıklarınızı düzenli tarayın.
- CI/CD pipeline'ınıza güvenlik taraması adımı ekleyin.
Küçük Adımlar, Büyük Fark
Güvenlik, bir kez yapılıp biten bir iş değildir; sürekli bir süreçtir. OWASP Top 10'u okumak, ekibinizle threat modeling yapmak ve kod incelemelerinde güvenlik gözüyle bakmak zaman içinde ciddi bir kültür değişikliği yaratır.
Uygulamanızı geliştirirken "bir saldırgan buraya nasıl bakardı?" sorusunu sormaya alışın. Bu basit soru, pek çok açığı daha kod yazılırken kapatmanızı sağlar.
Güvenli kodlamak bir seçenek değil, bir sorumluluktur.