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
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 3
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 2
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 4
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 4
Üçü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 4
Token Nerede Saklanmalı? localStorage, Memory, Cookie, Service Worker ve BFF'in Tehdit Modeli
Güvenlik SERİ 05

Token Nerede Saklanmalı? localStorage, Memory, Cookie, Service Worker ve BFF'in Tehdit Modeli

Tarayıcıda hiçbir saklama yeri XSS'in kullanıcı adına istek atmasını engelleyemez; fark, token'ın okunup dışarı taşınabilmesinde ve bu yüzden RFC 10017 token'ı tarayıcıya hiç vermeyen BFF'i öneriyor. Bu yazıda localStorage, memory ve HttpOnly cookie modellerini Angular 22 ve ASP.NET Core 10 lab'ında simüle edilmiş bir XSS ile deniyor, Web/Service Worker ve refresh token risklerini tartıyor ve Bookstore'un BFF kararını testlerle sabitliyoruz.

8 Kas 2026 14 dk 4
Trusted Types'ı Production'a Almak: Angular Policy'leri, Üçüncü Parti Kütüphaneler ve Baseline 2026
Güvenlik SERİ 04

Trusted Types'ı Production'a Almak: Angular Policy'leri, Üçüncü Parti Kütüphaneler ve Baseline 2026

Trusted Types, DOM sink'lerine düz string yerine yalnız izinli bir policy'nin ürettiği typed object kabul ettirir; DomSanitizer.sanitize sonucunu innerHTML'e yazmak bile ihlaldir. Bu yazıda Angular'ın policy adlarını node_modules'tan doğruluyor, Report-Only ile envanter çıkarıyor, DOMPurify, loader ve üçüncü parti script ihlallerini çözüyor, default policy'nin tehlikesini gösteriyor ve Firefox 148 ile Baseline 2026 olan desteği özetliyoruz.

8 Kas 2026 11 dk 3
Angular'a Strict CSP Uygulamak: Nonce, strict-dynamic, autoCsp ve Report-Only ile Kademeli Geçiş
Güvenlik SERİ 03

Angular'a Strict CSP Uygulamak: Nonce, strict-dynamic, autoCsp ve Report-Only ile Kademeli Geçiş

Host listesine dayalı CSP çoğu zaman aşılabilir; Angular için doğru yol nonce ya da hash ile 'strict-dynamic' kullanan strict bir policy. Bu yazıda statik hosting için autoCsp'nin ürettiği hash'li policy'yi, ASP.NET Core'dan istek başına nonce ve ngCspNonce ile servisi, base-uri 'none' tuzağını, üçüncü parti script'lerle uzlaşmayı ve Report-Only ile kırmadan enforce'a geçişi headless Chrome çıktılarıyla gösteriyoruz.

8 Kas 2026 12 dk 3
Angular'da DOM XSS Sink Envanteri: ElementRef, Renderer2, Dinamik URL'ler, HTML Üreten Kütüphaneler ve Code Review Listesi
Güvenlik SERİ 02

Angular'da DOM XSS Sink Envanteri: ElementRef, Renderer2, Dinamik URL'ler, HTML Üreten Kütüphaneler ve Code Review Listesi

Angular yalnız kendi template binding'lerini sanitize eder; ElementRef.nativeElement, Renderer2.setProperty/setAttribute, insertAdjacentHTML, dinamik script ve iframe src'leri ile HTML üreten library'ler korumasızdır. Bu yazıda bu sink'leri headless Chrome'da gösteriyor, template ve DomSanitizer ile düzeltiyor, marked, DOMPurify ve setHTML'i karşılaştırıyor ve grep ile ESLint tabanlı bir code review kontrol listesi kuruyoruz.

8 Kas 2026 13 dk 3
Tarayıcının Güvenlik Modeli: Same-Origin Policy, Origin ile Site Farkı, SameSite Cookie'ler ve Fetch Metadata
Güvenlik SERİ 01

Tarayıcının Güvenlik Modeli: Same-Origin Policy, Origin ile Site Farkı, SameSite Cookie'ler ve Fetch Metadata

Same-Origin Policy cross-origin isteği engellemez, yalnız yanıtın okunmasını engeller; isteğin yanında hangi cookie'nin gideceğine SameSite karar verir, sunucu da Sec-Fetch-* header'larına bakarak isteği reddedebilir. Bu yazıda origin ile site farkını, CORS'un SOP'yi neden gevşettiğini, Strict/Lax/None cookie'lerin ve Fetch Metadata header'larının headless Chrome'da gerçek davranışını ASP.NET Core 10 lab'ında logluyor ve bir Fetch Metadata policy'sini testleriyle kuruyoruz.

8 Kas 2026 13 dk 3
OWASP'ın Diğer Listeleri: API Security, LLM Top 10, ASVS ve Cheat Sheet Series
Güvenlik SERİ 21

OWASP'ın Diğer Listeleri: API Security, LLM Top 10, ASVS ve Cheat Sheet Series

Top 10'un dışına çıkıyoruz: API Security Top 10 (2023) ile BOLA, BOPLA ve BFLA ayrımı, response DTO'suyla property seviyesinde veri ifşasını önlemek, Top 10 for LLM Applications (2025), ASVS 5.0 ve Cheat Sheet Series. Serinin yeni Top 10 sürümleriyle nasıl süreceğini ve sıradaki güvenlik serilerini konuşuyoruz.

6 Kas 2026 7 dk 20
OWASP Top 10: 2021'den 2025'e Ne Değişti ve Eski Dokümanları Güncellemek
Güvenlik SERİ 20

OWASP Top 10: 2021'den 2025'e Ne Değişti ve Eski Dokümanları Güncellemek

SSRF'in A01'e katılması, component sorununun Software Supply Chain Failures'a büyümesi, Security Misconfiguration'ın ikinciliğe çıkışı, yeni A10 Mishandling of Exceptional Conditions ve üç isim değişikliği. 2025 metodolojisini rakamlarıyla okuyor, eski ve yılsız kategori numaralarını bulup 2025 karşılığını öneren küçük bir .NET aracı yazıyoruz.

6 Kas 2026 8 dk 15
Blog Haritası