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
24 yazı bulundu #guvenlik
OWASP A06: Insecure Design — İş Mantığı Açıkları, Race Condition ve Rate Limiting
Güvenlik SERİ 11

OWASP A06: Insecure Design — İş Mantığı Açıkları, Race Condition ve Rate Limiting

Satır satır doğru çalışan bir sipariş endpoint'i negatif adetle para iade ediyor, tek kullanımlık kuponu iki kez kabul ediyor ve son kopyayı iki kişiye satıyor. Tasarım hatasını uygulama hatasından ayırıyor, STRIDE ve abuse case ile eksik requirement'ları buluyor, koşullu UPDATE, transaction, .NET 10 doğrulaması ve rate limiting ile düzeltiyoruz.

6 Kas 2026 11 dk 10
OWASP A05: Injection (2) — XSS, Razor Encoding, innerHTML, CSP ve Trusted Types
Güvenlik SERİ 10

OWASP A05: Injection (2) — XSS, Razor Encoding, innerHTML, CSP ve Trusted Types

Reflected, stored ve DOM-based XSS'i Bookstore lab'ında inceliyoruz: HtmlEncoder ve Razor'ın otomatik encoding'i, JSON API'den gelen değeri innerHTML ile yazmanın tuzağı ve textContent ile düzeltmesi, Angular'ın sanitization'ı ve bypassSecurityTrust* riski, ardından ikinci savunma hattı olarak CSP ile Trusted Types'ın headless Chrome'da güvensiz kodu nasıl durdurduğu.

6 Kas 2026 8 dk 13
OWASP A05: Injection (1) — SQL Injection ve Command Injection
Güvenlik SERİ 09

OWASP A05: Injection (1) — SQL Injection ve Command Injection

Aynı kitap arama endpoint'ini string birleştirme, ADO.NET parametresi, Dapper ve EF Core ile yazıyor, ' OR 1=1 -- girdisinin parametreyle nasıl sıradan bir veriye dönüştüğünü görüyoruz. FromSqlRaw ile FromSql farkını EF1002 uyarısı ve ToQueryString ile inceliyor, Process.Start'ta shell yerine ArgumentList ve allowlist kullanıyor, .NET 10'un yerleşik doğrulamasıyla input validation'ın yerini netleştiriyoruz.

6 Kas 2026 10 dk 12
OWASP A04: Cryptographic Failures (2) — Parola Saklama, Data Protection ve Secret Yönetimi
Güvenlik SERİ 08

OWASP A04: Cryptographic Failures (2) — Parola Saklama, Data Protection ve Secret Yönetimi

ASP.NET Core Identity'nin PasswordHasher'ı bir parolayı tam olarak nasıl saklıyor? Hash'in başlığını çözüp PBKDF2-HMAC-SHA512 ve 100.000 iterasyonu görüyor, OWASP'ın 220.000 önerisine SuccessRehashNeeded ile geçiyor, Data Protection API ile süreli ve imzalı paylaşım link'i üretiyor, secret'ları user-secrets ve ortam değişkenleriyle koddan ayırıyoruz.

6 Kas 2026 9 dk 10
OWASP A04: Cryptographic Failures (1) — Encoding, Hashing, Encryption ve HTTPS
Güvenlik SERİ 07

OWASP A04: Cryptographic Failures (1) — Encoding, Hashing, Encryption ve HTTPS

Base64 neden şifreleme değil, hash ile encryption arasındaki fark ne? AES-GCM ile değiştirilen veriyi yakalıyor, parola sıfırlama kodunda Random yerine RandomNumberGenerator kullanıyor, MD5'in parola için neden yanlış olduğunu görüyor, CA5351 ve CA5394 analyzer'larını açıyor, ASP.NET Core'da HTTPS redirect'i ve HSTS varsayılanlarını curl ile inceliyoruz.

6 Kas 2026 9 dk 12
OWASP A03: Software Supply Chain Failures — NuGetAudit, npm audit ve SRI
Güvenlik SERİ 06

OWASP A03: Software Supply Chain Failures — NuGetAudit, npm audit ve SRI

A03:2025 Software Supply Chain Failures neden ayrı bir kategori? event-stream, Log4Shell, xz, polyfill.io ve 2025 npm incident'larından dersler; net10.0'da transitive bağımlılıkları da tarayan NuGetAudit, build'i kıran uyarılar, lock dosyaları, npm audit ve npm ci, CDN script'i için SRI, CycloneDX ile SBOM, provenance ve Dependabot.

6 Kas 2026 11 dk 9
OWASP A02: Security Misconfiguration — Hata Sayfaları, OpenAPI, Header'lar ve XXE
Güvenlik SERİ 05

OWASP A02: Security Misconfiguration — Hata Sayfaları, OpenAPI, Header'lar ve XXE

Kod aynı, ayarlar yanlış: Production'da koşulsuz açılmış developer exception page stack trace'i döküyor, unutulmuş MapOpenApi satırı API'nin bütün haritasını müşteriye veriyor. ProblemDetails, ortam bazında configuration, AllowedHosts, kapatılan Server header'ı, CSP ve nosniff için küçük bir middleware ve HSTS'in localhost'ta neden görünmediğiyle düzeltiyor; son olarak DTD içeren bir XML belgesini reddeden sıkı bir XmlReader kuruyoruz.

6 Kas 2026 10 dk 11
OWASP A01: Broken Access Control (2) — Path Traversal, CORS ve SSRF
Güvenlik SERİ 04

OWASP A01: Broken Access Control (2) — Path Traversal, CORS ve SSRF

Dosya adını istemciden alan bir indirme endpoint'i, her origin'i geri yazan bir CORS policy'si ve verilen URL'ye istek atan bir kapak indirme kodu. Üç zafiyetli kalıbı inceleyip kanonik yol kontrolü, origin'leri tek tek listeleyen bir policy ve allowlist, kapalı redirect ve ConnectCallback ile IP kontrolü yapan bir HttpClient ile kapatıyor; düzeltilmiş kodun kötü girdiyi nasıl reddettiğini lab'da görüyoruz.

6 Kas 2026 12 dk 13
OWASP A01: Broken Access Control (1) — IDOR, Admin Endpoint'leri ve ASP.NET Core'da Yetkilendirme
Güvenlik SERİ 03

OWASP A01: Broken Access Control (1) — IDOR, Admin Endpoint'leri ve ASP.NET Core'da Yetkilendirme

Giriş yapmış Alan, sipariş numarasını değiştirerek Grace'in siparişini okuyor ve rol kontrolü unutulmuş admin endpoint'inden bütün kullanıcıları alıyor. İki açığı lab'da gösterip policy'ler, IAuthorizationService ile resource-based authorization ve fallback policy ile deny by default yaklaşımıyla kapatıyor, 403 ile 404 arasındaki seçimi ve .NET 10'un cookie redirect değişikliğini konuşuyoruz.

6 Kas 2026 11 dk 12
Güvenlik Laboratuvarı: ASP.NET Core 10 ile Bookstore API ve HTTP'yi curl ile Okumak
Güvenlik SERİ 02

Güvenlik Laboratuvarı: ASP.NET Core 10 ile Bookstore API ve HTTP'yi curl ile Okumak

Serinin geri kalanında kullanacağımız lab'ı kuruyoruz: SQLite kullanan bir ASP.NET Core 10 minimal API. curl -i ile method, status code, header ve cookie'leri güvenlik gözüyle okuyor, aynı hatanın Development ve Production'da istemciye nasıl farklı döndüğünü, HTTPS geliştirme sertifikasını ve lab kurallarını görüyoruz.

6 Kas 2026 11 dk 11
Web Güvenliğine Giriş: OWASP Top 10:2025 Nedir, Nasıl Okunur?
Güvenlik SERİ 01

Web Güvenliğine Giriş: OWASP Top 10:2025 Nedir, Nasıl Okunur?

Güvenlik neden sonradan eklenen bir özellik olamaz? Başka bir müşterinin siparişini döndüren küçük bir endpoint'le başlıyor, CIA üçlüsünü ve attack surface'i, OWASP'ı ve Top 10'un neden bir standart değil farkındalık belgesi olduğunu, listenin veri ve anketle nasıl hazırlandığını ve 2025 listesinin on kategorisini görüyoruz.

6 Kas 2026 9 dk 12
Dapper ile Parameter'lar ve SQL Injection: Güvenli Sorgunun Kuralları
Veritabanı SERİ 04

Dapper ile Parameter'lar ve SQL Injection: Güvenli Sorgunun Kuralları

String birleştirmenin neden SQL injection'a kapı açtığını gerçek bir saldırıyla görüyor, ardından anonymous object, DynamicParameters, IN @Ids list expansion, DbString ve $ önekini inceliyoruz; ORDER BY @Column gibi sessiz tuzaklarla.

6 Kas 2026 10 dk 13
Blog Haritası