Skip to content

Latest commit

 

History

History
73 lines (45 loc) · 4.64 KB

5.md

File metadata and controls

73 lines (45 loc) · 4.64 KB

5. Adım: Web Uygulamalarında Güvenlik Mimarisi

Şimdiye kadar belirli güvenlik açıklarını tanıdık: SQL Injection, XSS, Broken Authentication... Fakat tüm bu açıkların üstesinden gelmek sadece yamalarla, tek tek noktalara çözüm bulmakla olmaz. Sağlam bir güvenlik mimarisine ihtiyaç vardır.

Güvenlik mimarisi, uygulamanı inşa ettiğin temel çerçevenin içinde güvenlik önlemlerini de sistematik olarak yerleştirme işidir. Yani kodu geliştirmeye başlamadan, veri tabanını kurmadan, API uçlarını açmadan önce, güvenliğe dair bir yol haritası çizmelisin.


5.1 Güvenlik Mimarisi Nedir?

Güvenlik mimarisi, bir uygulamanın “korunaklı” doğması için gereken prensipleri ve yapıları belirler. Bu mimari, aşağıdaki unsurların güvenliğini sağlar:

  • Veri Akışı: Kullanıcılardan sisteme, sistemden kullanıcılara akan veri.
  • Bileşenler Arası İletişim: Frontend, Backend ve Veri Tabanı arasındaki trafiğin güvenliği.
  • API Uç Noktaları: Dış dünyaya açılan her kapının denetimi.

Mimaride amaç, sadece bilinen açıkları kapatmak değil, gelecekte ortaya çıkabilecek saldırı vektörlerine karşı da dayanıklı bir temel inşa etmektir.


5.2 Güvenlik Mimarisi İlkeleri

1. Principle of Least Privilege (En Az Ayrıcalık İlkesi):
Her bileşene, yapması gereken iş için minimum yetki ver. Örneğin, veri tabanına bağlanan bir uygulama kullanıcısının sadece SELECT yapabilmesi gerekiyorsa, DELETE ya da INSERT hakları vermek fazla ayrıcalıktır.

2. Defense in Depth (Derinlemesine Savunma):
Tek bir güvenlik kontrolüne bel bağlama. Birden fazla katmanda, farklı savunma mekanizmaları uygula. Örneğin, hem WAF (Web Application Firewall) kullan, hem de sunucu tarafında input validation yap, hem de veriyi saklarken şifrele.

3. Security by Design (Tasarımda Güvenlik):
Güvenlik bir eklenti değil, temel bir fonksiyon olmalı. Projeyi planlarken güvenlik gereksinimlerini baştan belirle ve kodu o şekilde yaz.

4. Fail Secure (Güvenli Hata):
Hata durumunda sistem açık bırakmasın. Mesela kimlik doğrulama hatası olduğunda, varsayılan olarak erişimi kapalı tut.

5. Separation of Duties (Görev Ayrımı):
Örneğin, kimlik doğrulama servisi ayrı, veri saklama servisi ayrı, logging servisi ayrı olsun. Böylece bir bileşen kırıldığında diğerleri saldırganın eline geçmez.


5.3 Pratikte Güvenlik Mimarisi Uygulama

Adım 1: Mimarinin Haritasını Çıkar

Bir web uygulaması başlatmadan önce tüm bileşenlerin diyagramını çiz.

  • Kullanıcı → Load Balancer → Web Sunucuları → API Katmanı → Veri Tabanı → Loglama Sistemi
    Bu zincirdeki her adımda ne gibi güvenlik kontrolleri uygulanacak? TLS şifrelemesi, IP filtreleme, izleme ve uyarı sistemleri?

Adım 2: Güvenlik Bütünü Düşün

Sadece OWASP Top 10’a odaklanma. Yeni saldırı vektörleri, tedarik zinciri saldırıları, 3. parti kütüphanelerin oluşturabileceği riskler… Bunları da mimariye dahil et.

Adım 3: Modüler Güvenlik Katmanları

Uygulamanın her bileşeni için ayrı güvenlik önlemleri uygula. API için rate limiting, veri tabanı için sorgu parametreleştirme, frontend için Content Security Policy… Bütün bunlar birleşince, saldırgan bir noktayı aşsa bile diğer bariyerde takılır.


5.4 Güvenli Yazılım Geliştirme Yaşam Döngüsü (SDL)

Security Development Lifecycle (SDL), yazılım geliştirme sürecine güvenliği entegre etmeyi amaçlayan bir yöntemdir.

  • Tasarım Aşaması: Tehdit modelleme yap. “Bu uygulamayı nereden kırabilirler?” sorusunu sor.
  • Geliştirme Aşaması: Kod incelemeleri, statik/dinamik analizler.
  • Test Aşaması: Penetrasyon testleri, otomatik güvenlik testleri.
  • Dağıtım ve Bakım: Sürekli izleme, olay müdahale planları, düzenli yama uygulama.

Bu döngü, güvenlik mimarisini sadece kâğıt üzerinde değil, pratikte de yaşatır.


5.5 Kapanış

Sağlam bir güvenlik mimarisi kurduğunda, her bir açık senin için bir sürpriz olmaktan çıkar. Saldırganlar yeni yollar denese de, çok katmanlı ve önceden planlanmış bir savunma onları yavaşlatır, durdurur hatta vazgeçirir.

Yazılıma başlamadan önce güvenliği tasarıma dahil etmek, belki biraz zaman kaybettirir gibi görünür. Ama sonradan açıkları kapatmaya çalışmaktan çok daha az maliyetli ve çok daha güvenilirdir.

Sıradaki adımda, gerçek hayattan örneklerle pratik yapmaya ve öğrendiklerimizi pekiştirmeye geçebiliriz. Bu nokta, teoriyi eyleme dönüştürme zamanı! 😊