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/pathveya\\\\attacker.com/pathgibi) tarayıcılar ve sunucu tarafı URL ayrıştırıcıları tarafından farklı yorumlanabilir. Bazı ayrıştırıcı uygulamalarında bunlarattacker.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.replaceStateya dalocation.pushStatekullanımı). - SSR önyükleme URL'si uyuşmazlığı: Sunucu tarafı render'da, render'a geçirilen
urluygulama için yapılandırılan temel kökenle (örneğinAPP_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ğinAPP_BASE_HREF) eşleştiğinden emin olun. Güvenilir uygulama kökeniyle eşleşmiyorlarsa ham istek başlıklarından (X-Forwarded-Hostgibi) 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 dahttps://) kullanın.