Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
67 yazı bulundu
OWASP API Security Top 10: 2019'dan 2023'e Ne Değişti ve Eski Raporları Bugünün Diliyle Okumak
Güvenlik SERİ 11

OWASP API Security Top 10: 2019'dan 2023'e Ne Değişti ve Eski Raporları Bugünün Diliyle Okumak

2023 sürümünde Excessive Data Exposure ile Mass Assignment BOPLA'da birleşti, API2, API4 ve API9'un adı değişti, Injection ve Logging listeden çıktı, hassas iş akışları, SSRF ve güvensiz tüketim eklendi; bu yüzden eski bulgular numaraya göre değil anlama göre eşlenir. Eşleme tablosu, eski raporları çeviren ve değerlendirilmemiş kategorileri gösteren küçük bir araç ve yeni sürüm geldiğinde ne yapacağımız.

8 Kas 2026 11 dk 5
API Güvenliğini Sürekli Test Etmek ve İzlemek: Authorization Regresyonu, OpenAPI Tabanlı Tarama ve Abuse Telemetry
Güvenlik SERİ 10

API Güvenliğini Sürekli Test Etmek ve İzlemek: Authorization Regresyonu, OpenAPI Tabanlı Tarama ve Abuse Telemetry

API güvenliğini sürekli korumak için kontrolleri bir test piramidine yerleştirir, OpenAPI tabanlı bir tarayıcıyı yalnız kendi ortamına karşı çalıştırıp bulgularını regresyon testine çevirir ve reddedilen istekleri tenant bazında ölçersin. Schemathesis'in bulduğu sözleşme farkları ve iki 500, RespectNullableAnnotations ile sistematik düzeltme, OpenTelemetry metric'leri ve tek sayfalık kontrol listesi.

8 Kas 2026 13 dk 5
API8 ve API9: Yanlış Yapılandırma ve Envanter — OpenAPI'yi Envanter Olarak Kullanmak, Deprecation/Sunset Header'ları ve Shadow API'ler
Güvenlik SERİ 09

API8 ve API9: Yanlış Yapılandırma ve Envanter — OpenAPI'yi Envanter Olarak Kullanmak, Deprecation/Sunset Header'ları ve Shadow API'ler

API8'e karşı API'ye özgü bir kontrol listesini Production ortamında koşan testlere bağlarsın; API9'a karşı build sırasında üretilen OpenAPI dokümanını commit edilen bir envanter olarak kullanır ve eski sürümleri RFC 9745 Deprecation ve RFC 8594 Sunset header'larıyla emekliye ayırırsın. CORS ve middleware sırası, git diff ile habersiz endpoint ve saat dilimi tuzağı.

8 Kas 2026 11 dk 6
API7 ve API10: Dış Dünyayla Konuşan API'ler — Webhook'lar, Outbound URL Doğrulama ve Üçüncü Parti Yanıtlara Güvenmemek
Güvenlik SERİ 08

API7 ve API10: Dış Dünyayla Konuşan API'ler — Webhook'lar, Outbound URL Doğrulama ve Üçüncü Parti Yanıtlara Güvenmemek

Kullanıcının verdiği webhook URL'ini kayıtta biçim olarak, bağlantı anında ise SocketsHttpHandler.ConnectCallback ile çözülen her adres üzerinden doğrularsın; üçüncü parti yanıtlara da kullanıcı girdisi gibi davranırsın. DNS rebinding taklidi, redirect'siz teslimat, imzalı ve tek seferlik işlenen ödeme webhook'u, boyut limiti ve resilience ile doğrulanan kargo API yanıtı.

8 Kas 2026 12 dk 7
API6 Sensitive Business Flows: Hassas Akışları Belirlemek, Idempotency-Key ve Akış Bazlı Limitler
Güvenlik SERİ 07

API6 Sensitive Business Flows: Hassas Akışları Belirlemek, Idempotency-Key ve Akış Bazlı Limitler

API6'ya karşı önce hangi iş akışlarının otomasyonla zarar göreceğini belirler, sonra her akışa kendi kuralını koyarsın. Idempotency-Key taslağına göre tekrarlanan POST'ları tek kez işleyen bir filter, eşzamanlı tekrar testi, kupon ve sınırlı ürün kurallarını veritabanı constraint'leri ve koşullu UPDATE ile uygulamak, RFC 9470 biçiminde step-up ve müşteri başına akış limiti.

8 Kas 2026 13 dk 5
API5 BFLA: Endpoint Envanterinden Otomatik Yetkilendirme Testi ve Admin API'lerini Ayırmak
Güvenlik SERİ 06

API5 BFLA: Endpoint Envanterinden Otomatik Yetkilendirme Testi ve Admin API'lerini Ayırmak

BFLA'yı, uygulamanın gerçekten yayımladığı endpoint'leri EndpointDataSource ile listeleyip her birinin açık bir yetki kararı taşıdığını ve matriste satırı olduğunu doğrulayan testlerle kalıcı olarak kapatırsın. Admin yüzeyini route group, policy ve ayrı port'la ayırıyor, RequireHost'un Host header'ıyla aşılabildiğini gösterip gerçek port kontrolü ekliyor, method bazlı yetkiyi ve method override header'larını ele alıyoruz.

8 Kas 2026 11 dk 6
API4 Unrestricted Resource Consumption: Sayfa Boyutu, Sorgu Karmaşıklığı, Timeout'lar, Kota ve Maliyetli Dış Çağrılar
Güvenlik SERİ 05

API4 Unrestricted Resource Consumption: Sayfa Boyutu, Sorgu Karmaşıklığı, Timeout'lar, Kota ve Maliyetli Dış Çağrılar

API4'e karşı her parametreye, her endpoint'e ve para harcatan her dış çağrıya bir üst sınır koyar ve bunu testle korursun. 200 000 siparişle ölçülen sınırsız listeden yola çıkıp sayfa boyutu, offset ve sort allowlist'i, toplu işlem ve body limiti, request timeout ile CancellationToken, tenant ve plan bazlı rapor ve SMS kotası ile 429 ve Retry-After'ı kuruyoruz.

8 Kas 2026 12 dk 6
API3 BOPLA: Property Seviyesinde Yetkilendirme, PATCH İstekleri ve Response Shaping
Güvenlik SERİ 04

API3 BOPLA: Property Seviyesinde Yetkilendirme, PATCH İstekleri ve Response Shaping

BOPLA'yı serializer ayarıyla değil, rol başına ayrı response tipleri ve rol başına yazılabilir alan allowlist'iyle kapatırsın. Mapperly ile yeni alan eklenince build'i kıran projection'lar, farklı görünümü ayrı endpoint ve policy'ye taşımak, JSON Merge Patch'te kilitli alanları reddetmek ve OpenAPI şemasını testle korunan bir sözleşme olarak kullanmak.

8 Kas 2026 12 dk 4
API2 Machine-to-Machine Authentication: API Key Tasarımı, HMAC İmzalı İstekler ve Token Endpoint'lerini Korumak
Güvenlik SERİ 03

API2 Machine-to-Machine Authentication: API Key Tasarımı, HMAC İmzalı İstekler ve Token Endpoint'lerini Korumak

Makineler arası bir API key; tanınabilir prefix'li, yalnız hash'i saklanan, tenant ve scope'a bağlı, iki aktif key ile rotation'a ve revocation'a izin veren bir formatla tasarlanır ve asla query string'de taşınmaz. Custom authentication handler, timestamp ve body hash'iyle HMAC imzalı istekler, replay koruması ve parola sıfırlama gibi endpoint'lerde IP ve hesap başına limitleri testleriyle kuruyoruz.

8 Kas 2026 15 dk 6
API1 BOLA'yı Sistematik Kapatmak: Tenant/Owner Scoped Sorgular, Global Query Filter ve Resource-Based Authorization
Güvenlik SERİ 02

API1 BOLA'yı Sistematik Kapatmak: Tenant/Owner Scoped Sorgular, Global Query Filter ve Resource-Based Authorization

BOLA'yı her endpoint'e Where ekleyerek değil, kapsamı veri erişim katmanında zorunlu kılarak kapatırsın: EF Core 10'un named query filter'larıyla tenant ve owner filtresi, kapsamsız sorguyu tek bir işaretli class'a hapseden testler, alt kaynak ve toplu işlemlerde ilişki kontrolü, resource-based handler ile 403/404 ayrımı ve matristen otomatik üretilen başka tenant senaryoları.

8 Kas 2026 14 dk 6
API Güvenlik Lab'ı: Multi-Tenant Sipariş API'si, Authorization Matrisi ve Güvenlik Testi Altyapısı
Güvenlik SERİ 01

API Güvenlik Lab'ı: Multi-Tenant Sipariş API'si, Authorization Matrisi ve Güvenlik Testi Altyapısı

API güvenliğinin çoğu "kimin verisi" sorusunda bozulur ve bunu ancak endpoint × aktör × kaynak için beklenen durum kodunu yazan, koddan ayrı tutulan bir authorization matrisiyle sistematik olarak yakalarsın. İki tenant'lı, üç rollü bir Minimal API lab'ı kurup matrisi xUnit Theory, WebApplicationFactory ve test authentication handler ile koşturuyor, ilk koşuda sekiz BOLA açığını görüyoruz.

8 Kas 2026 15 dk 5
ASP.NET Core 6'dan 11'e Authentication ve Identity'de Değişenler
Güvenlik SERİ 18

ASP.NET Core 6'dan 11'e Authentication ve Identity'de Değişenler

ASP.NET Core 6'dan 10'a authentication'daki en önemli değişiklikler derleme hatası vermez, davranışı sessizce değiştirir. Aynı kodu .NET 6, 8 ve 10'da çalıştırıp tek scheme'in varsayılan olmasını, SecurityToken'ın JsonWebToken'a dönmesini, cookie'nin API'de 302 yerine 401 vermesini ve yeni metrikleri gösteriyor; .NET 9'un PAR'ını, .NET 11'in TimeProvider, passkey adı ve DBSC yeniliklerini ve bir geçiş kontrol listesini veriyoruz.

8 Kas 2026 10 dk 5
Blog Haritası