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
38 yazı bulundu
.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 0
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 0
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 0
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 0
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 0
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 0
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 1
Authorization'ın İç Yapısı: Policy Provider, Requirement Handler'lar, IAuthorizationMiddlewareResultHandler ve Policy Testleri
Güvenlik SERİ 01

Authorization'ın İç Yapısı: Policy Provider, Requirement Handler'lar, IAuthorizationMiddlewareResultHandler ve Policy Testleri

AuthorizationMiddleware her istekte endpoint metadata'sını tek policy'de birleştirir, authenticate eder, handler'ları çalıştırır ve sonucu 401 ya da 403'e çevirir. Handler'lar arasındaki OR, requirement'lar arasındaki AND ve Fail()'in veto etkisini gerçek çıktılarla gösteriyor; dinamik policy provider, IAuthorizationRequirementData, ProblemDetails dönen 403 ve endpoint × kullanıcı test matrisi kuruyoruz.

8 Kas 2026 12 dk 0
Angular 11'den 22'ye ve Tarayıcılarda Frontend Güvenliğinde Değişenler
Güvenlik SERİ 09

Angular 11'den 22'ye ve Tarayıcılarda Frontend Güvenliğinde Değişenler

Angular 11'den 22'ye güvenlik özelliklerinin çoğu yeni major'larla değil patch'lerle geldi; eski bir projeyi denetlerken major'a değil tam sürüme bakmak gerekiyor. Bu yazıda Trusted Types'tan autoCsp'ye ve SSR allowedHosts'a kadar her özelliğin geldiği sürümü paket tarball'larından doğruluyor, 22.0.8'de XSRF header'ının gönderilmediğini headless Chrome'da gösteriyor, tarayıcılardaki değişiklikleri topluyor ve çalıştırılabilir bir denetim script'i çıkarıyoruz.

8 Kas 2026 13 dk 1
npm Supply Chain'i Sertleştirmek: Lifecycle Script'leri, Release Cooldown, Provenance ve Trusted Publishing
Güvenlik SERİ 08

npm Supply Chain'i Sertleştirmek: Lifecycle Script'leri, Release Cooldown, Provenance ve Trusted Publishing

npm supply chain'i sertleştirmenin üç ayağı var: kurulum script'lerini onay listesiyle sınırlamak, yeni sürümleri birkaç gün bekletmek ve publish token'larını trusted publishing ile ortadan kaldırmak. Bu yazıda npm 11 ve 12'nin allowScripts policy'sini, pnpm'in allowBuilds ve minimumReleaseAge ayarlarını, npm min-release-age'i, npm audit signatures çıktısını ve OIDC tabanlı trusted publishing'i yerel bir registry'de gerçek kurulumlarla deniyoruz.

8 Kas 2026 10 dk 1
Angular SSR Güvenliği: allowedHosts, Host Header Doğrulama, TransferState ve Bundle'a Sızan Secret'lar
Güvenlik SERİ 07

Angular SSR Güvenliği: allowedHosts, Host Header Doğrulama, TransferState ve Bundle'a Sızan Secret'lar

Angular SSR'da sunucu, göreli HttpClient URL'lerini gelen isteğin Host header'ına göre çözer; bu yüzden allowedHosts'u açık adlarla doldur, proxy header'larına yalnız güvenilir bir proxy arkasında güven ve API adresini Host'tan türetme. Yerel bir SSR sunucusunda SSRF'yi, 2026 advisory'lerini, TransferState'e sızan alanları, SSR'da nonce'lu CSP'yi ve bundle ile source map'e giren secret'ları gerçek çıktılarla gösteriyoruz.

8 Kas 2026 16 dk 1
Üçüncü Parti Script'ler, iframe'ler ve postMessage: sandbox, frame-ancestors, Permissions-Policy ve Güvenli Mesajlaşma
Güvenlik SERİ 06

Üçüncü Parti Script'ler, iframe'ler ve postMessage: sandbox, frame-ancestors, Permissions-Policy ve Güvenli Mesajlaşma

Sayfana script etiketiyle eklenen üçüncü parti kod senin origin'inde ve senin yetkinle çalışır; onu kendi origin'indeki sandbox'lı bir iframe'e taşı, sayfanı frame-ancestors header'ıyla çerçevelenmeye kapat, kullanmadığın API'leri Permissions-Policy ile kapat ve postMessage'da origin, kaynak pencere ve şemayı doğrula. Hepsini yerel üç origin'li bir lab'da headless Chrome ve Vitest ile gerçek çıktılarla gösteriyoruz.

8 Kas 2026 16 dk 1
Blog Haritası