Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
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.
Razor Syntax ve Layout'lar: @ İfadeleri, HTML Encoding, _Layout, Section'lar, _ViewStart ve _ViewImports
Razor, @ ile yazılan her değeri varsayılan olarak HTML encode eder; bu XSS'i kapatır ama Türkçe karakterleri de ı gibi entity'lere çevirir, WebEncoderOptions ile düzeltilir. Implicit ve explicit expression farkını, Html.Raw'ın ve JavaScript'e '@Model' gömmenin tehlikesini, Json.Serialize'ı, section'ları, _ViewStart/_ViewImports hiyerarşisini ve nested layout'ta kaybolan section hatasını gerçek çıktılarla görüyoruz.
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.
JavaScript DOM'a Giriş: Element'leri Seçmek, Değiştirmek ve Oluşturmak
Tarayıcının HTML'den kurduğu DOM ağacını tanıyor; querySelector ile element seçiyor, textContent ile innerHTML farkını ve XSS riskini görüyor, classList ve createElement ile sayfayı canlı değiştiriyoruz.