Hata Ansiklopedisi

Suspicious URL Origin Change

Bu hata, Sunucu Tarafı Render (SSR) ortamlarında bir URL çözümlemesi beklenmedik bir köken (origin) değişikliğiyle sonuçlandığında oluşur. Bu denetim, uygulamanızı Sunucu Tarafı İstek Sahteciliği'ne (SSRF) ve güvenlik atlatmalarına karşı korumak için tasarlanmış bir @angular/platform-server güvenlik özelliğidir.

Açıklama

SSR sırasında HTTP istekleri yapmak ve rota durumlarını işlemek için Angular'ın göreli URL'leri mutlak URL'lere çözümlemesi gerekir.

Bu çözümleme sürecinde Angular, çözümlenen URL'nin beklenmedik şekilde harici ya da güvenilmeyen bir kökene işaret etmediğini doğrular. Bir URL göreli bir yol gibi davranıp farklı bir kökene çözümlenirse, Angular NG05703 fırlatır ve isteği/navigasyonu engeller.

Yaygın nedenler

  • Ters eğik çizgi önekli ele geçirme girişimleri (açık yönlendirmeler / SSRF atlatma): Eğik ve ters eğik çizgilerle başlayan göreli yollar (/\\attacker.com/path veya \\\\attacker.com/path gibi) tarayıcılar ve sunucu tarafı URL ayrıştırıcıları tarafından farklı yorumlanabilir. Bazı ayrıştırıcı uygulamalarında bunlar attacker.com'a işaret eden mutlak bir URL'ye çözümlenir. Angular bu uyuşmazlığı algılar ve çözümlemeyi engeller.
  • Farklı kökenlere izin verilmeyen durum değişiklikleri: Ortam, URL değişikliklerini yalnızca mevcut kökenle sınırlayacak şekilde yapılandırıldığında, uygulamanın kökenini değiştiren navigasyon veya URL güncellemeleri (örneğin location.replaceState ya da location.pushState kullanımı).
  • SSR önyükleme URL'si uyuşmazlığı: Sunucu tarafı render'da, render'a geçirilen url uygulama için yapılandırılan temel kökenle (örneğin APP_BASE_HREF) hizalı değilse, router başlangıçta konumu senkronize etmeye çalışabilir ve bu da izin verilmeyen bir köken değişikliğine yol açar.
  • Gizlenmiş protokol şemaları: Köken denetimlerini atlatmaya çalışan, gizlenmiş veya bozuk protokollere sahip mutlak URL'ler (örneğin ht\ntp://evil.com/path).

Hatayı ayıklama

Hatayı tetikleyen URL'yi kontrol edin. Ayrıştırma anormalliklerini tetikleyebilecek beklenmedik ters eğik çizgiler, satır sonları veya başka karakterler içermediğinden emin olun:

  • Göreli URL'lerde veya yönlendirme yollarında ters eğik çizgi (\) kullanmaktan kaçının.
  • Kullanıcıdan gelen URL'lerin veya sorgu parametrelerinin SSR'de işlenmeden önce doğrulandığından ve temizlendiğinden emin olun.
  • SSR önyükleme URL'sini yapılandırılan temel URL ile hizalayın: Hata bir SSR ortamında başlangıçta oluşuyorsa, render'a geçirilen url'in beklenen temel kökenle/host ile (örneğin APP_BASE_HREF) eşleştiğinden emin olun. Güvenilir uygulama kökeniyle eşleşmiyorlarsa ham istek başlıklarından (X-Forwarded-Host gibi) gelen dinamik URL'leri kullanmaktan kaçının.
  • Protokolden bağımsız bir URL (//other-domain.com/path) aracılığıyla bilinçli olarak farklı bir alan adına istek yapmak istiyorsanız, bunun yapılandırma tarafından izin verildiğinden emin olun veya açık bir şema (http:// ya da https://) kullanın.