ASP.NET Temel Blazor Hybrid güvenlik konuları

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Bu makalede, uygulamalar için Blazor Hybrid güvenlikle ilgili dikkat edilmesi gerekenler açıklanmaktadır.

Blazor Hybrid web içeriğini işleyen uygulamalar bir platform Web Viewiçinde .NET kodu yürütür. .NET kodu ile arasında bir birlikte çalışma kanalı aracılığıyla web içeriğiyle etkileşim kurar Web View.

WebView ve .NET kodu, web içeriğini işlemek için uygulama içinde birlikte çalışabilir.

içine Web View işlenen web içeriği, aşağıdaki konumlardan herhangi birinden uygulama tarafından sağlanan varlıklardan gelebilir:

  • wwwroot Uygulamadaki klasör.
  • Uygulamanın dışındaki bir kaynak. Örneğin, İnternet gibi bir ağ kaynağı.

.NET kodu ile içinde Web Viewçalışan kod arasında bir güven sınırı vardır. .NET kodu, uygulama ve yüklediğiniz tüm güvenilen üçüncü taraf paketleri tarafından sağlanır. Uygulama oluşturulduktan sonra .NET kodu Web View içerik kaynakları değiştirilemez.

İçeriğin .NET kod kaynaklarının aksine, içinde Web View çalışan koddan içerik kaynakları yalnızca uygulamadan değil dış kaynaklardan da gelebilir. Örneğin, bir dış Content Delivery Network'ten (CDN) statik varlıklar bir uygulamanın Web Viewtarafından kullanılabilir veya işlenebilir.

içindeki Web View kodu, bir web uygulaması için tarayıcıda çalışan koda güvenilmediği şekilde güvenilmez olarak düşünün. Uygulamalardaki Blazor Hybrid güvenilmeyen kaynaklar için diğer uygulama türleriyle aynı tehditler ve genel güvenlik önerileri geçerlidir.

Mümkünse, üçüncü taraf kaynaktan içerik yüklemekten kaçının. Riski azaltmak için dış varlıkları indirerek, kullanıcılara hizmet sunmanın güvenli olduğunu doğrulayarak ve bunları uygulamanın geri kalanıyla birlikte paketlemek üzere uygulamanın wwwroot klasörüne yerleştirerek doğrudan uygulamadan içerik sunmanız mümkün olabilir. Dış içerik uygulamaya dahil edilmek üzere indirildiğinde, uygulamanın klasörüne yerleştirmeden wwwroot önce virüsler ve kötü amaçlı yazılımlar için tarama yapmanızı öneririz.

Uygulamanızın dış kaynaktan gelen içeriğe başvurması gerekiyorsa, içeriğin gizliliği ihlal edilirse uygulamanın yüklenmesini engelleme fırsatı sağlamak için yaygın web güvenliği yaklaşımlarını kullanmanızı öneririz:

Tüm kaynaklar uygulamaya paketlenmiş olsa ve herhangi bir dış kaynaktan yüklenmese bile, kaynaklar siteler arası betik (XSS) saldırılarına izin verebilecek güvenlik açıklarına sahip olabileceğinden, içinde çalışan Web Viewkaynakların kodundaki sorunlar konusunda dikkatli olun.

Genel olarak çerçeve, Blazor HTML ile güvenli yollarla ilgilenerek XSS'ye karşı koruma sağlar. Ancak, bazı programlama desenleri bileşenlerin işlenmiş çıkışa ham HTML eklemesine izin verir Razor ; örneğin güvenilmeyen bir kaynaktan içerik işleme. Örneğin, HTML içeriğini doğrudan veritabanından işlemekten kaçınılmalıdır. Ayrıca, uygulama tarafından kullanılan JavaScript kitaplıkları, html'yi yanlışlıkla veya kasıtlı olarak güvenli olmayan çıkışları işlemek için güvenli olmayan yollarla işleyebilirsiniz.

Bu nedenlerden dolayı, normalde web uygulamalarına uygulanan XSS'ye karşı aynı korumaları uygulamak en iyisidir. Bilinmeyen kaynaklardan betik yüklenmesini engelleyin ve ve diğer güvenli olmayan JavaScript temel bilgileri gibi eval güvenli olmayabilecek JavaScript özelliklerini uygulamayın. Bu güvenlik risklerini azaltmak için CSP oluşturulması önerilir.

içindeki Web View kodun güvenliği aşılırsa, kod içindeki Web View tüm içeriğe erişim kazanır ve birlikte çalışma kanalı aracılığıyla konakla etkileşime girebilir. Bu nedenle, konak sisteminde kötü amaçlı saldırılara Web View yol açabilecek güvenliği aşılmış Blazor Server bir uygulama gibi, diğer hassas bağlamlarda olduğu gibi, (olaylarJS, birlikte çalışma) gelen tüm içerikler güvenilmeyen olarak kabul edilmeli ve doğrulanmalıdır.

Kimlik bilgileri, güvenlik belirteçleri veya hassas kullanıcı verileri gibi hassas bilgileri, güvenliği aşılırsa bir saldırganın kullanımına sunulduğundan, Web Viewbağlamında depolamayın Web View . Hassas bilgileri doğrudan uygulamanın yerel bölümünde işleme gibi daha güvenli alternatifler vardır.

Bir içinde işlenen dış içerik iframe

Dış içeriği bir Blazor Hybrid sayfada görüntülemek için kullanırkeniframe, kullanıcıların içeriğin uygulamayı içeren üst sayfadan yalıtıldığından emin olmak için korumalı alan özelliklerinden yararlanmasını öneririz. Aşağıdaki Razor bileşen örneğinde, etiketin sandbox<iframe> korumalı alan özelliklerini sayfaya uygulaması için admin.html özniteliği mevcuttur:

<iframe sandbox src="https://contoso.com/admin.html" />

Uyarı

sandbox Özniteliği, tarayıcının ilk sürümlerinde desteklenmez. Daha fazla bilgi için bkz . Kullanabilir miyim: sandbox.

Varsayılan olarak, uygulamanın dışındaki URL'lere bağlantılar, içinde Web Viewyüklenmeyen uygun bir dış uygulamada açılır. Varsayılan davranışı geçersiz kılmanızı önermeyiz.

Dağıtılan Web View uygulamalarda güncel kalma

Varsayılan olarak, BlazorWebView denetim şu anda yüklü, platforma özgü yerel Web Viewöğesini kullanır. Yerel Web View , yeni API desteği ve güvenlik sorunlarına yönelik düzeltmelerle düzenli aralıklarla güncelleştirildiğinden, bir uygulamanın uygulamanın gereksinimlerini karşılayan bir Web View sürüm kullandığından emin olmak gerekebilir.

Dağıtılan uygulamalarda güncel kalmasını Web View sağlamak için aşağıdaki yaklaşımlardan birini kullanın:

  • Tüm platformlarda: Sürümü denetleyin Web View ve kullanıcıdan bu sürümü güncelleştirmek için gerekli adımları gerçekleştirmesini iste.
  • Yalnızca Windows'ta: Sistemin paylaşılan Web Viewyerine kullanarak uygulama içinde sabit bir sürüm Web View paketle.

Android

AndroidWeb View, Google Play Store aracılığıyla dağıtılır ve güncelleştirilir. Dizesini Web View okuyarak sürümü denetleyin User-Agent . Web ViewJavaScript birlikte çalışma kullanarak 's navigator.userAgent özelliğini okuyun ve kullanıcı aracısı dizesi bir bileşen bağlamının Razor dışında gerekliyse isteğe bağlı olarak tek bir hizmet kullanarak değeri önbelleğe alın.

Android Öykünücüsü kullanılırken:

  • Google Play Hizmetleri önceden yüklenmiş olarak öykünmüş bir cihaz kullanın. Google Play Hizmetleri önceden yüklenmiş olmadan öykünmüş cihazlar desteklenmez .
  • Google Play Store'dan Google Chrome'u yükleyin. Google Chrome zaten yüklüyse Google Play Store'dan Chrome'u güncelleştirin. Öykünmüş bir cihazda Chrome'un en son sürümü yüklü değilse, Android'in Web View en son sürümü yüklü olmayabilir.

Ios/Mac Catalyst

iOS ve Mac Catalyst her ikisi de işletim sistemi tarafından güncelleştirilen Safari tabanlı bir denetim kullanır WKWebView. Android örneğine benzer şekilde, 'nin User-Agent dizesini Web ViewWeb Viewokuyarak sürümü belirleyin.

Windows (.NET MAUI, WPF, Windows Forms)

Windows'da, web uygulamalarını çalıştırmak Blazor için Chromium tabanlı Microsoft Edge WebView2 gereklidir.

Varsayılan olarak, olarak bilinen Evergreen distributionen yeni yüklü sürümü WebView2kullanılır. Uygulamasının belirli bir sürümünü WebView2 göndermek istiyorsanız kullanın Fixed Version distribution.

Şu anda yüklü WebView2 olan sürümü ve dağıtım modlarını denetleme hakkında daha fazla bilgi için dağıtım belgelerine WebView2 bakın.

Ek kaynaklar