Megosztás:


BinaryFormatter migrálási útmutató

Figyelmeztetés

Határozottan javasoljuk, hogy a BinaryFormatter miatt ne használja. A meglévő felhasználóknak el kell hagyniuk BinaryFormatter.

A .NET 9-től kezdve már nem tartalmazza a futtatókörnyezet a BinaryFormatter implementációját. Az API-k továbbra is jelen vannak, de megvalósításuk mindig a projekt típusától függetlenül egy-egy PlatformNotSupportedExceptionelemet eredményez. Ezért a meglévő visszafelé kompatibilitási jelző beállítása már nem elegendő a használathoz BinaryFormatter.

A következő két lehetőség közül választhat:

Mi a kockázat a használatban BinaryFormatter?

Minden olyan deszerializáló, ami bináris vagy szöveges formátumban lehetővé teszi a bemenet számára, hogy információt vigyen a létrehozandó objektumokra, biztonsági kockázatot jelent. A problémát a gyengeségek közös enumerációja (CWE) írja le: CWE-502 "Nem megbízható adatok deszerializálása". BinaryFormattera .NET-keretrendszer 2002-es kezdeti kiadásában szerepel egy ilyen deszerializáló. Ezt a BinaryFormater biztonsági útmutatójában is ismertetjük.

A használat BinaryFormatterismert kockázatai miatt a funkció ki lett zárva a .NET Core 1.0-ból. De anélkül, hogy egyértelmű migrálási útvonal lett volna a biztonságosabb használathoz, az BinaryFormatter ügyféligények a .NET Core 2.0-s részét képezték. Azóta a .NET-csapat már úton van az eltávolításhoz BinaryFormatter, amely lassan kikapcsolja azt alapértelmezés szerint több projekttípusban, de lehetővé teszi a felhasználók számára, hogy jelzőkkel jelentkezzenek be, ha továbbra is szükség van a visszamenőleges kompatibilitásra.

A döntéssel kapcsolatos további részletekért lásd a BinaryFormatter .NET 9-ben történő eltávolításról szóló közleményt.

Ha a migrálási útmutatóban nem szereplő eltávolítással kapcsolatos BinaryFormatterproblémákat tapasztal, küldjön egy problémát a github.com/dotnet/runtime , és jelezze, hogy a probléma az eltávolítással BinaryFormatterkapcsolatos.

Migrálási témakörök

A BinaryFormatter való migrálás általában egy másik szerializálót választást jelenti. Ez azonban általában csak akkor lehetséges, ha a kódolt adatok előállítóját és felhasználóját is szabályozza. Azon esetben, ha nem rendelkezik ellenőrzéssel a gyártó felett, akkor közvetlenül áttérhet az új API használatára a hasznos adatok olvasásáhozBinaryFormatter a kódolt típusok példányosítása nélkül.

Az alábbiakban mindkét lehetőséget áttekintjük.

Szerializáló kiválasztása

A migrálás BinaryFormatter első lépése egy szerializáló kiválasztása , amely a helyén használható. A .NET-csapat a konkrét igényektől függően négy különböző szerializálóra való migrálást javasol.

Olvasási BinaryFormatter (NRBF) hasznos adatok

Számos alkalmazás betölti és deszerializálja a tárolóban tárolt hasznos adatokat, és nem mindig lehetséges az összes tárolt hasznos adat előzetes átalakítása. Más forgatókönyvek olyan rendszereket vagy szolgáltatásokat is tartalmazhatnak, amelyek az általuk BinaryFormatterelőállított adatokat fogadják, és ezeket a rendszereket egymástól függetlenül kell migrálni.

Ezekben a forgatókönyvekben és más helyzetekben szükség lesz a megadott hasznos adatok olvasásának és az új formátumra való áttérésnek a támogatásának megőrzésére. Ezeknek az igényeknek a kielégítése érdekében mostantól biztonságosan beolvasható az általános célú és sebezhető deszerializálás nélkül létrehozott BinaryFormatter NRBF hasznos adatok.

Windows Forms- és WPF-alkalmazások migrálása

A Windows Forms és a WPF-alkalmazások további módosításokat igényelhetnek. További migrálási útmutatásért tekintse meg a Windows Forms-alkalmazásokat, a WPF-alkalmazásokat és a WinForms-/WPF-vágólapokat, valamint a húzással kapcsolatos útmutatást .

Felügyelt erőforrások migrálása (ResX)

A leggyakoribb erőforrástípusok (például sztringek és ikonok) BinaryFormatternélkül is működnek. Egyéni típusok esetén be kell állítania BinaryFormatter és engedélyeznie kell a kompatibilitási kapcsolót, lásd: Erőforrás betöltése futásidőben.

A kompatibilitási csomag használata

Azokban az esetekben, amikor a BinaryFormatter-ra való migrálást nem lehet elvégezni a .NET 9-re való frissítéskor, elérhető egy nem támogatott kompatibilitási csomag. A System.Runtime.Serialization.Formatters NuGet-csomag tartalmazza a BinaryFormatter működőképes implementációját, beleértve annak biztonsági réseit és kockázatait is.

Bár nem támogatott és nem ajánlott, a kompatibilitási csomag használatának útmutatója tartalmazza a csomag telepítésének és a funkció engedélyezésének részleteit.

Figyelmeztetés

Határozottan javasoljuk, hogy a BinaryFormatter miatt ne használja. A meglévő felhasználóknak el kell hagyniuk BinaryFormatter.