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
MFA: TOTP, Recovery Code'lar, Step-up Authentication ve SMS'in Zayıflığı
Güvenlik SERİ 05

MFA: TOTP, Recovery Code'lar, Step-up Authentication ve SMS'in Zayıflığı

ASP.NET Core Identity'nin varsayılan authenticator provider'ı bir TOTP kodunu ±2 zaman adımı (beş kod) içinde ve tekrar tekrar kabul ediyor; NIST ise kodun bir kez kabul edilmesini istiyor. TOTP'yi RFC 6238 test vektörüyle kendimiz hesaplıyor, kurulum, lockout, replay korumalı provider, recovery code'lar, amr claim'iyle step-up policy'si ve SMS ile 'bu cihazı hatırla'nın riskini gerçek çıktılarla gösteriyoruz.

8 Kas 2026 12 dk 1
ASP.NET Core Identity ile Hesap Yaşam Döngüsü: Kayıt, E-posta Onayı, Parola Sıfırlama, External Login ve Hesap Silme
Güvenlik SERİ 04

ASP.NET Core Identity ile Hesap Yaşam Döngüsü: Kayıt, E-posta Onayı, Parola Sıfırlama, External Login ve Hesap Silme

Identity'nin sıfırlama token'ı tek kullanımlık olarak işaretlenmez; içinde security stamp taşıdığı için parola değişince ölür, varsayılan ömrü de bir gündür. Kayıt, e-posta onayı, ayrı ömürlü parola sıfırlama provider'ı, diğer session'ları düşürme, e-posta değişikliği, Google ile external login'de otomatik bağlamanın riski ve KVKK/GDPR için kişisel veri export'u ile hesap silmeyi Angular ekranıyla kuruyoruz.

8 Kas 2026 12 dk 1
ASP.NET Core Identity'nin Mimarisi: UserManager, SignInManager, Store'lar ve Özelleştirme
Güvenlik SERİ 03

ASP.NET Core Identity'nin Mimarisi: UserManager, SignInManager, Store'lar ve Özelleştirme

ASP.NET Core Identity tek parça bir giriş sistemi değil; UserManager kullanıcı kurallarını, SignInManager HTTP oturumunu, store interface'leri de veri erişimini ayrı katmanlarda yürütür. Guid key'li kendi user entity'mizi ve tablo isimlerimizi kuruyor, schema version'ları, dört kayıt yöntemini ve MapIdentityApi'nin JWT olmayan token'ını ve tekrar kullanılabilen refresh token'ını gerçek çıktılarla inceliyoruz.

8 Kas 2026 10 dk 1
ASP.NET Core Cookie Authentication Derinlemesine: Session Ömrü, Sliding Expiration, Server-Side Session ve Revocation
Güvenlik SERİ 02

ASP.NET Core Cookie Authentication Derinlemesine: Session Ömrü, Sliding Expiration, Server-Side Session ve Revocation

Sliding expiration tek başına bir session'ı sonsuza kadar yaşatabilir; absolute timeout'u OnValidatePrincipal ile kendin eklemen, iptal için de sunucuda bir durum (ITicketStore ya da versiyon damgası) tutman gerekir. Cookie ticket'ının içini, 14 günlük varsayılanı, yarı pencerede yenilemeyi, chunking'i, Redis'te server-side session'ı ve tüm cihazlardan çıkışı gerçek çıktılarla gösteriyoruz.

8 Kas 2026 11 dk 1
Authentication ve Authorization'ın Haritası: Credential, Session, Token, Claim ve ASP.NET Core'un Authentication Handler Modeli
Güvenlik SERİ 01

Authentication ve Authorization'ın Haritası: Credential, Session, Token, Claim ve ASP.NET Core'un Authentication Handler Modeli

Authentication kim olduğunu, authorization ne yapabileceğini bulur; ASP.NET Core'da ilki isimli scheme'ler ve handler'larla HttpContext.User'ı doldurur, ikincisi policy'ye bakıp challenge (401) ya da forbid (403) çağırır. Credential, session, token ve claim kavramlarını adlandırıyor, policy scheme ile cookie ve JWT'yi birleştiriyor ve .NET 10'da Results.Ok dönen endpoint'in neden hâlâ 302 verdiğini gösteriyoruz.

8 Kas 2026 11 dk 1
.NET 11 ile ASP.NET Core Güvenliği: Fetch Metadata Tabanlı Otomatik CSRF Koruması, Device Bound Session Credentials ve TLS Channel Binding
Güvenlik SERİ 08

.NET 11 ile ASP.NET Core Güvenliği: Fetch Metadata Tabanlı Otomatik CSRF Koruması, Device Bound Session Credentials ve TLS Channel Binding

.NET 11, WebApplication.CreateBuilder ile kurulan uygulamalara Sec-Fetch-Site ve Origin header'larına bakan, varsayılan açık bir CSRF koruması ekliyor; ama kararı yalnız form okuyan endpoint'ler uyguluyor ve DisableAntiforgery onu da kapatıyor. Karar tablosunu, CORS ile güvenilen origin'leri, aynı kuralları .NET 10'da uygulayan bir middleware'i, deneysel DBSC'yi, TLS channel binding'i, authorization metadata birleşmesini ve geçiş kontrol listesini anlatıyoruz.

8 Kas 2026 10 dk 2
ASP.NET Core'da Güvenlik Olaylarını Gözlemlemek: Authentication, Authorization ve Identity Metrikleri, Audit Trail ve Alarm
Güvenlik SERİ 07

ASP.NET Core'da Güvenlik Olaylarını Gözlemlemek: Authentication, Authorization ve Identity Metrikleri, Audit Trail ve Alarm

.NET 10'un authentication, authorization ve Identity metrikleri 401, 403 ve hesap kilitlenmelerini sayar ama kullanıcı adını ve policy adını bilinçli olarak taşımaz; kim, neyi, ne zaman sorusu audit trail'in işidir. Metrikleri OpenTelemetry ve Prometheus ile topluyor, gerçek etiketleri testle doğruluyor, alarm kuralları yazıyor ve değişikliği yakalayan hash zincirli bir audit trail kuruyoruz.

8 Kas 2026 10 dk 2
Kestrel ve Request Limitleri: Body Size, Header Timeout, Request Timeout'lar ve Yavaş İstemcilere Karşı Ayarlar
Güvenlik SERİ 06

Kestrel ve Request Limitleri: Body Size, Header Timeout, Request Timeout'lar ve Yavaş İstemcilere Karşı Ayarlar

Kestrel varsayılan olarak 28,6 MB gövdeye, 30 saniyelik header süresine ve sınırsız request süresine izin verir; request timeout ise CancellationToken taşınmazsa hiçbir şeyi durdurmaz. Gerçek varsayılanları koddan okuyor, gövde, header, form ve JSON limitlerini, yavaş istemcilere karşı RequestHeadersTimeout ile MinRequestBodyDataRate'i, request timeouts middleware'ini ve Kestrel ile reverse proxy arasındaki iş bölümünü ölçümlerle anlatıyoruz.

8 Kas 2026 10 dk 2
Antiforgery Derinlemesine: Cookie Authentication, SPA ve Minimal API'lerde CSRF Koruması
Güvenlik SERİ 05

Antiforgery Derinlemesine: Cookie Authentication, SPA ve Minimal API'lerde CSRF Koruması

ASP.NET Core'un antiforgery middleware'i isteği reddetmez, sonucu bir feature'a yazar; minimal API'de bu sonucu yalnız form binding uygular, bu yüzden cookie ile çalışan JSON endpoint'leri token'sız istekleri 200 ile kabul eder. Token çiftinin iç yapısını, Angular'ın XSRF-TOKEN pattern'ini, zorunlu doğrulama yapan endpoint filter'ı, login sonrası token yenilemeyi ve DisableAntiforgery'nin bilinçli kullanımını gerçek çıktılarla anlatıyoruz.

8 Kas 2026 10 dk 1
Security Header'ları ve Nonce'lu CSP'yi ASP.NET Core'dan Üretmek: HSTS Preload, COOP/COEP/CORP, Permissions-Policy ve Raporlama Endpoint'i
Güvenlik SERİ 04

Security Header'ları ve Nonce'lu CSP'yi ASP.NET Core'dan Üretmek: HSTS Preload, COOP/COEP/CORP, Permissions-Policy ve Raporlama Endpoint'i

Nonce'lu CSP her istekte değişir ve yanıtın türüne bağlıdır, bu yüzden Nginx'te değil uygulamada üretilmeli ve HTML hiçbir katmanda cache'lenmemeli. ASP.NET Core'da API ve HTML için ayrı header setleri üreten tek bir middleware, Angular index.html'ine nonce enjeksiyonu, Report-Only ve boyut ile rate limit korumalı rapor endpoint'i, HSTS preload riski ve COOP/COEP/CORP'u gerçek header çıktılarıyla kuruyoruz.

8 Kas 2026 11 dk 2
Rate Limiting Derinlemesine: Algoritmalar, Partition Key'leri, Chained Limiter'lar ve Çoklu Instance
Güvenlik SERİ 03

Rate Limiting Derinlemesine: Algoritmalar, Partition Key'leri, Chained Limiter'lar ve Çoklu Instance

ASP.NET Core'un rate limiter'ları process belleğinde yaşar; iki instance limiti iki katına çıkarır, proxy arkasında ise doğru IP olmadan herkes aynı partition'a düşer. Fixed window, sliding window ve token bucket'ı aynı trafikle karşılaştırıyor; queue sırası, partition key'leri, CreateChained, varsayılan 503 yerine 429 ve Retry-After, paylaşılan policy tuzağı ve kullanıcı adı başına login limitini gerçek çıktılarla gösteriyoruz.

8 Kas 2026 12 dk 3
Data Protection Derinlemesine: Key Ring, Rotation, Key Storage, Key'leri Şifrelemek ve Çoklu Instance
Güvenlik SERİ 02

Data Protection Derinlemesine: Key Ring, Rotation, Key Storage, Key'leri Şifrelemek ve Çoklu Instance

Çok instance'lı ASP.NET Core uygulamasında sebepsiz logout'lar ve boş gövdeli 400'ler genelde instance başına ayrı Data Protection key ring'inden gelir. Key ring'in ömrünü, rotation ve revocation'ı, purpose hiyerarşisini, dosya, Redis ve veritabanı store'larını, key'leri certificate ile şifrelemeyi ve SetApplicationName'in rolünü gerçek log'larla anlatıyoruz.

8 Kas 2026 12 dk 4
Blog Haritası