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
98 yazı bulundu
Uygulama Güvenlik Incident'ına Müdahale: Tespit, Kapsam Belirleme, Kanıtı Korumak, İletişim ve Bildirim
Güvenlik SERİ 06

Uygulama Güvenlik Incident'ına Müdahale: Tespit, Kapsam Belirleme, Kanıtı Korumak, İletişim ve Bildirim

Bir güvenlik incident'ında önce kanıt korunur, etkilenen kayıtlar tahminle değil audit log'dan çıkarılır, sonra düzeltilir ve hukuk ile kişisel verilerden sorumlu kişi ilk saatte dahil edilir. Bookstore'da bir kurumun siparişlerinin başka kurumca okunduğu BOLA vakası: NIST SP 800-61r3, hash'li kanıt kopyası, etkilenen kayıt sorgusu ve testi, düzeltme, müşteri ve KVKK bildirimi, runbook ve tabletop exercise.

15 Kas 2026 12 dk 7
Pentest ile Çalışmak: Kapsam, Rules of Engagement, Bulguları Okumak, Retest ve Rapor Sonrası
Güvenlik SERİ 05

Pentest ile Çalışmak: Kapsam, Rules of Engagement, Bulguları Okumak, Retest ve Rapor Sonrası

Pentest'in değeri, test başlamadan yazılan kapsam ve rules of engagement ile test bittikten sonra her bulgunun bir regression testine ve bir karara dönüşmesine bağlıdır. Pentest, DAST, bug bounty ve red team farkı; Bookstore'un Kurumsal Sipariş pentest'inde kapsam, test hesapları ve durma koşulları, severity itirazı, kanıtlı false positive, kök nedene göre gruplama, F-01 ve F-02 için düzeltme ve testler, retest ve threat model güncellemesi.

15 Kas 2026 12 dk 8
Kendi Ürünün için Zafiyet Yönetimi: security.txt, Coordinated Disclosure, GitHub Security Advisory ve CVE
Güvenlik SERİ 04

Kendi Ürünün için Zafiyet Yönetimi: security.txt, Coordinated Disclosure, GitHub Security Advisory ve CVE

Dışarıdan gelen zafiyet bildirimi için önce bir kapı gerekir: RFC 9116'ya uygun security.txt, SECURITY.md ve GitHub private vulnerability reporting; sonra triage, draft advisory'de gizli düzeltme, CVE talebi ve düzeltilmiş sürümle aynı gün yayın. Bookstore API'sinden security.txt sunmak ve testlemek, sectxt doğrulaması, Bookstore.Contracts NuGet paketi için advisory akışı, bug bounty ve safe harbor.

15 Kas 2026 10 dk 6
Güvenlik Requirement'larını Yazmak: OWASP ASVS 5.0 ile Seviye Seçimi, Acceptance Criteria ve Security Champion
Güvenlik SERİ 03

Güvenlik Requirement'larını Yazmak: OWASP ASVS 5.0 ile Seviye Seçimi, Acceptance Criteria ve Security Champion

Güvenlik requirement'ı, hedeflenen ASVS seviyesinin yazılı olarak seçilmesi ve seçilen her maddenin bir testle ya da kanıtla doğrulanmasıdır; 345 maddeyi doldurmak değil. Bookstore için ASVS 5.0 seviye 2 hedefi ve bilerek eklenen bir seviye 3 maddesi, requirement dosyası, güvenlik acceptance criteria'sı ve abuse story, Definition of Done, dosya ile testleri eşleyen xUnit testi, security champion ve NIST SSDF eşlemesi.

15 Kas 2026 12 dk 5
STRIDE ile Tehdit Bulmak ve Önceliklendirmek: Element Başına STRIDE, Attack Tree, Risk Puanlama ve Mitigation Kararı
Güvenlik SERİ 02

STRIDE ile Tehdit Bulmak ve Önceliklendirmek: Element Başına STRIDE, Attack Tree, Risk Puanlama ve Mitigation Kararı

STRIDE'ı DFD'nin her elemanına türüne göre uygulayıp tehditleri olasılık × etki ile sıralamak, her biri için mitigate, eliminate, transfer ya da accept kararı vermek ve kararı bir teste ya da risk register satırına bağlamak gerekir. Bookstore'un webhook'u ve kurumsal satın alma onayı üzerinde LINDDUN, attack tree, DREAD'in neden bırakıldığı ve dört göz kuralını doğrulayan xUnit testleri, gerçek çıktılarla.

15 Kas 2026 11 dk 7
Threat Modeling Nedir? Dört Soru, Data Flow Diagram ve Trust Boundary ile Bookstore Checkout'unu Modellemek
Güvenlik SERİ 01

Threat Modeling Nedir? Dört Soru, Data Flow Diagram ve Trust Boundary ile Bookstore Checkout'unu Modellemek

Threat modeling, kod yazılmadan önce sistemin bir temsili üzerinde "ne ters gidebilir?" diye sormaktır ve en çok tasarım aşamasında işe yarar. Threat Modeling Manifesto'nun dört sorusu, DFD elemanları ve trust boundary'lerle Bookstore'un checkout, ödeme ve kargo akışını modelliyor, modeli OWASP Threat Dragon 2.6.2 ile JSON olarak repo'da versiyonluyor ve PR template'ine bağlıyoruz.

15 Kas 2026 10 dk 6
Yurt Dışına Aktarım ve Veri İhlali Hazırlığı: Cloud Region, LLM Sağlayıcıları, Standart Sözleşme ve 72 Saatlik Bildirim
Güvenlik SERİ 07

Yurt Dışına Aktarım ve Veri İhlali Hazırlığı: Cloud Region, LLM Sağlayıcıları, Standart Sözleşme ve 72 Saatlik Bildirim

Yurt dışına aktarım yalnız sunucunun yeri değildir; log, backup, e-posta, analytics ve LLM prompt'ları da aktarımdır ve 2024'ten beri yeterlilik kararı, standart sözleşme gibi uygun güvenceler ya da arızi hâllerden birine dayanmalıdır. Bookstore'da alt işleyen envanterini kodda tutuyor, standart sözleşmenin beş iş günlük bildirimini başlangıçta kontrol ediyor, erişim kaydıyla bir ihlalin kapsamını ve 72 saatlik bildirimin son anını ilk saatte çıkarıyoruz.

15 Kas 2026 11 dk 6
Aydınlatma, Açık Rıza ve Çerezler: Consent Kaydı, Çerez Banner'ı, Consent Mode ve Ticari İleti İzinleri (İYS)
Güvenlik SERİ 06

Aydınlatma, Açık Rıza ve Çerezler: Consent Kaydı, Çerez Banner'ı, Consent Mode ve Ticari İleti İzinleri (İYS)

Aydınlatma her veri işlemede yapılır, açık rıza ise yalnız rızaya dayanan işlemede ve ayrıca alınır; rıza da ispat edilebilir, sürümlü ve geri alınabilir olmalıdır. Bookstore'da append-only ConsentRecord'u, Kurum'un çerez rehberine göre eşit butonlu bir Angular banner'ını, varsayılanı denied olan Google Consent Mode'u, bunları doğrulayan Playwright testlerini ve ticari e-posta izinlerinin üç iş günü içinde İYS'ye bildirilmesini kuruyoruz.

15 Kas 2026 13 dk 7
Log, Telemetry ve Analytics'te Kişisel Veri: URL'ler, Exception Mesajları, IP Adresi, Session Replay ve Hata Raporlama Araçları
Güvenlik SERİ 05

Log, Telemetry ve Analytics'te Kişisel Veri: URL'ler, Exception Mesajları, IP Adresi, Session Replay ve Hata Raporlama Araçları

Kişisel veri log'a çoğu zaman bir LogInformation satırıyla değil; URL'deki e-postayla, log'a verilen bir record'la, exception mesajıyla, span tag'iyle ve metric label'ıyla girer. Bookstore'un checkout akışında bu sızıntıları gerçek çıktılarla gösteriyor, canary değerleri arayan bir testle kilitliyor, tarayıcı hata raporlarını temizleyip IP adresini kısaltıyor ve telemetry'yi envantere ekliyoruz.

15 Kas 2026 11 dk 8
Saklama Süresi, Silme ve Anonimleştirme: "Hesabımı Sil", Soft Delete, Backup'lar, Cache'ler ve Periyodik İmha Job'ı
Güvenlik SERİ 04

Saklama Süresi, Silme ve Anonimleştirme: "Hesabımı Sil", Soft Delete, Backup'lar, Cache'ler ve Periyodik İmha Job'ı

"Hesabımı sil" talebi tek bir DELETE değil, verinin her parçası için ayrı bir karardır: profil silinir, siparişler yasal süre boyunca kişiden koparılıp saklanır, süre dolunca anonimleşir. Bookstore'da foreign key tuzağını, soft delete'in neden yetmediğini, kopyaların silme yollarını, periyodik imha job'ını, imha kaydını ve backup'tan geri yüklemede silinen müşterinin geri gelmesini erasure ledger ile çözmeyi gerçek çıktılarla gösteriyoruz.

15 Kas 2026 12 dk 7
Kişisel Veriyi Korumak: Always Encrypted, Uygulama Seviyesinde Şifreleme, Pseudonymization, Maskeleme ve Test Verisi
Güvenlik SERİ 03

Kişisel Veriyi Korumak: Always Encrypted, Uygulama Seviyesinde Şifreleme, Pseudonymization, Maskeleme ve Test Verisi

Hassas bir kişisel veri alanını korumanın yolu, tehdide göre katman seçmektir: TDE diski, Always Encrypted DBA'yı, uygulama seviyesinde AES-GCM backup ve replica'yı korur, maskeleme ise yalnız ekranı. Bookstore'da fatura kimlik numarasını purpose'a bağlı AES-GCM ile şifreliyor, HMAC blind index ile arıyor, destek ekibine maskeli gösteriyor ve test ortamını Bogus ile sahte kontrol haneli sentetik veriye taşıyoruz.

15 Kas 2026 12 dk 7
Kişisel Veri Envanteri ve Privacy by Design: Veriyi Sınıflandırmak, Kodda İşaretlemek ve Minimizasyon
Güvenlik SERİ 02

Kişisel Veri Envanteri ve Privacy by Design: Veriyi Sınıflandırmak, Kodda İşaretlemek ve Minimizasyon

Kişisel veri envanterinin teknik yarısı koddan üretilebilir: entity'leri Microsoft.Extensions.Compliance attribute'larıyla sınıflandırıp EF Core modelinden tablo, sütun, amaç, saklama süresi ve kopyalar listesini çıkarıyoruz. Sınıflandırılmamış alanı yakalayan test, SQL Server sensitivity label script'i, doğum tarihi yerine yaş onayı gibi minimizasyon kararları, PCI DSS ve LINDDUN ile Bookstore üzerinde gerçek çıktılarla.

15 Kas 2026 13 dk 7
Blog Haritası