Hızlı Özet (TL;DR)
Yazılım güvenliği, kod geliştirme aşamasında başlar. OWASP (Open Worldwide Application Security Project) Top 10 listesinde yer alan zafiyetlerin başında Bozuk Erişim Kontrolü (Broken Access Control), Kriptografik Başarısızlıklar ve Enjeksiyon (SQLi/XSS) saldırıları gelir. Güvenli kodlamanın temel kuralı; kullanıcıdan veya dış API’lerden gelen hiçbir girdiye güvenmemek (Zero Trust), parametreli sorgular kullanmak ve hassas verileri güçlü algoritmalarla şifrelemektir.
En Yaygın 4 Web Güvenlik Açığı ve Savunma Matrisi
Yazılım projelerinde sıklıkla karşılaşılan güvenlik açıkları ve alınması gereken kod seviyesindeki önlemler:
| Güvenlik Açığı | Tehdit Türü | Olası Sonuç | Savunma Stratejisi |
|---|---|---|---|
| SQL Injection (SQLi) | Doğrudan veritabanı sorgusuna kontrolsüz metin enjeksiyonu | Veritabanının tamamen ele geçirilmesi ve veri sızıntısı | Parametreli sorgu (Prepared Statements) ve ORM kullanımı |
| Cross-Site Scripting (XSS) | Sayfaya zararlı JavaScript kodu gömülmesi | Kullanıcı oturum token’larının ve çerezlerinin çalınması | HTML çıktı kodlama, Context Sanitization ve katı CSP |
| BOLA / IDOR | URL’deki ID parametresini değiştirerek yetkisiz veriye erişim | Başka bir müşterinin faturasını veya siparişini görme | Her sorguda oturum açmış kullanıcının yetki kontrolü |
| CSRF | Kullanıcının tarayıcısına habersiz yetkili istek yaptırma | Kullanıcı adına şifre veya e-posta değiştirme | Anti-CSRF token ve SameSite=Strict çerez politikası |
Güvenli Kod Örnekleri: Parametreli Sorgular
Güvensiz Yaklaşım (SQL Injection’a Açık)
// TEHLİKELİ: Kullanıcı girdisi doğrudan sorguya ekleniyor
const query = `SELECT * FROM kullanicilar WHERE email = '${req.body.email}'`;
db.execute(query);
Güvenli Yaklaşım (Prepared Statement)
// GÜVENLİ: Veritabanı motoru girdiyi kod olarak değil, salt veri olarak işler
const query = "SELECT id, ad, email FROM kullanicilar WHERE email = ?";
db.execute(query, [req.body.email]);
Content Security Policy (CSP) ile Tarayıcı Katmanında Savunma
XSS saldırılarını etkisiz kılmanın en güçlü yollarından biri HTTP yanıt başlığına katı bir CSP eklemektir:
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; object-src 'none';
Bu başlık sayesinde istemci tarafına üçüncü taraf zararlı scriptlerin veya satır içi (inline) kodların enjekte edilmesi tarayıcı tarafından doğrudan engellenir.
Web projelerinizin siber saldırılara karşı dayanıklılığını test etmek için Sızma Testi ve Pentest sayfamızı inceleyebilir, güvenli kurumsal yazılım çözümlerimiz için Özel Yazılım Geliştirme ekibimizden destek alabilirsiniz.