Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dikkat
BinaryFormatter nedeniyle kullanılmasına karşı kesinlikle öneride bulunuruz. Mevcut kullanıcıların uygulamasından BinaryFormattergeçiş yapması gerekir.
.NET 9'dan itibaren, çalışma zamanına BinaryFormatter uygulamasını artık dahil etmiyoruz. API'ler hala mevcuttur, ancak uygulamaları proje türünden bağımsız olarak her zaman bir PlatformNotSupportedException fırlatır. Bu nedenle, mevcut geriye dönük uyumluluk bayrağını etkinleştirmek artık BinaryFormatter için yeterli değildir.
Bunu ele almak için iki seçeneğiniz vardır:
BinaryFormatter'dan uzaklaşma. İlişkili BinaryFormatter bağlı olarak kullanmayı durdurma seçeneklerini araştırmanızı kesinlikle öneririz. Aşağıda birkaç seçenek listelenmiştir.
kullanmaya BinaryFormatterdevam edin. .NET 9'da BinaryFormatter'u kullanmaya devam etmeniz gerekiyorsa, hata veren uygulamanın yerini alan desteklenmeyen System.Runtime.Serialization.Formatters NuGet paketi'ne bağımlı olmanız gerekir.
Kullanmanın riski BinaryFormatternedir?
Girişin oluşturulacak nesneler hakkında bilgi taşımasına izin veren herhangi bir seri durumdan çıkarıcı( ikili veya metin), gerçekleşmeyi bekleyen bir güvenlik sorunudur. Sorunu açıklayan yaygın bir zayıflık numaralandırması (CWE) vardır: CWE-502 "Güvenilmeyen Verilerin Seri Durumdan Çıkarılması". BinaryFormatter, 2002'de .NET Framework'ün ilk sürümüne dahil olan bir seril durumu çözümleyicisidir. Bunu BinaryFormater güvenlik kılavuzunda da ele alacağız.
Bilinen risklerinden dolayı BinaryFormatter kullanımı, .NET Core 1.0'da işlevsellikten çıkarıldı. Ancak daha güvenli bir şey kullanmaya açık bir geçiş yolu olmadan müşteri talebi .NET Core 2.0'a dahil edilmeye BinaryFormatter yol açtı. O zamandan beri .NET ekibi, BinaryFormatter'yu kaldırma yolunda, birden çok proje türünde varsayılan olarak yavaş bir şekilde devre dışı bırakıyor, ancak geriye dönük uyumluluk için hala gerekliyse tüketicilerin bayraklar aracılığıyla seçmelerine izin veriyor.
Karar hakkında daha fazla bilgi için .NET 9'da kaldırılmasıyla ilgili duyuruya bakınız.
BinaryFormatter'nin kaldırılması ile ilgili, bu geçiş kılavuzunda ele alınmayan sorunlar yaşıyorsanız, lütfen github.com/dotnet/runtime adresinde bir sorun oluşturun ve bu sorunun BinaryFormatter'nin kaldırılmasıyla ilgili olduğunu belirtin.
Geçiş konuları
'den BinaryFormatter geçiş genellikle farklı bir seri hale getirici seçmek anlamına gelir. Ancak, bu genellikle yalnızca kodlanmış verilerin hem üreticisini hem de tüketicisini denetlerseniz yapılabilir. Üreticiyi kontrol edemiyorsanız, kodlanmış türlerden hiçbirinin örneğini oluşturmadan yükleri okumak BinaryFormatter için yeni API'mize geçiş yapabilirsiniz.
Her iki seçenek de aşağıda incelenmiştir.
Seri hale getirici seçme
BinaryFormatter'den geçişin ilk adımı, yerine kullanılacak bir serileştirici seçmektir. .NET ekibi, özel gereksinimlerinize bağlı olarak dört farklı seri hale getiriciye geçiş yapmanızı önerir.
- System.Text.Json'a (JSON) geçiş
- DataContractSerializer'a (XML) geçiş
- MessagePack'e geçiş (ikili)
- protobuf-net'e geçiş (ikili)
Okuma BinaryFormatter (NRBF) yükleri
Birçok uygulama, depolamada kalıcı olan yükleri yükler ve seri durumdan çıkartır ve kalıcı olan tüm yükleri önceden dönüştürmek her zaman mümkün değildir. Diğer senaryolar, BinaryFormatter tarafından üretilen verileri alan ve bağımsız olarak geçirilmesi gereken hizmetleri veya sistemleri içerebilir.
Bu senaryolarda ve diğer senaryolarda, sağlanan yüklerin okunması ve zaman içinde yeni bir biçime geçiş için desteğin korunması gerekir. Bu ihtiyaçları karşılamak için, ile oluşturulan BinaryFormatter, genel amaçlı ve savunmasız seri durumdan çıkarmayı gerçekleştirmeden güvenli bir şekilde okumak artık mümkündür.
Windows Forms ve WPF uygulamalarını taşıma
Windows Forms ve WPF uygulamaları ek değişiklikler gerektirebilir. Daha fazla geçiş kılavuzu için bkz. Windows Forms uygulamaları, WPF uygulamalarıve WinForms/WPF panosu ve sürükleyip bırakma kılavuzu .
Yönetilen kaynakları taşımak (ResX)
En yaygın kaynak türleri (dizeler ve simgeler gibi) BinaryFormatter olmadan çalışacaktır. Özel türler için BinaryFormatter getirmeniz ve bir uyumluluk anahtarını etkinleştirmeniz gerekir. Bkz. Çalışma zamanı sırasında kaynak yükleme.
Uyumluluk paketini kullanma
.NET 9'a yükseltme sırasında 'den BinaryFormatter uzağa geçiş gerçekleştirilemediği senaryolar için desteklenmeyen bir uyumluluk paketi kullanılabilir. System.Runtime.Serialization. Formatters NuGet paketi, güvenlik açıkları ve riskleri de dahil olmak üzere BinaryFormatter işlevsel uygulamasını içerir.
Desteklenmeyen ve önerilmez ancak uyumluluk paketini kullanma kılavuzu, paketi yükleme ve işlevselliği etkinleştirme ayrıntılarını içerir.
Dikkat
BinaryFormatter nedeniyle kullanılmasına karşı kesinlikle öneride bulunuruz. Mevcut kullanıcıların uygulamasından BinaryFormattergeçiş yapması gerekir.