Lezen in het Engels

Delen via


Serialisatiemethoden van BinaryFormatter zijn verouderd en verboden in ASP.NET apps

Serialize en Deserialize methoden voor BinaryFormatter, Formatteren IFormatter zijn nu verouderd als waarschuwing. Bovendien is serialisatie standaard BinaryFormatter verboden voor ASP.NET apps.

Wijzigingsbeschrijving

Vanwege beveiligingsproblemen inBinaryFormatter, zijn de volgende methoden nu verouderd en produceren ze een compilatietijdwaarschuwing met idSYSLIB0011. Bovendien worden in ASP.NET Core 5.0- en hoger-apps een NotSupportedException, tenzij de web-app functionaliteit opnieuw heeft ingeschakeld BinaryFormatter .

De volgende serialisatiemethoden zijn ook verouderd en produceren waarschuwing SYSLIB0011, maar hebben geen gedragswijzigingen:

Versie geïntroduceerd

5,0

Reden voor wijziging

Deze methoden worden gemarkeerd als verouderd als onderdeel van een poging om het gebruik van BinaryFormatter het .NET-ecosysteem af te sluiten.

  • Stop met het gebruik van BinaryFormatter uw code. Overweeg in plaats daarvan het gebruik JsonSerializer of XmlSerializer. Zie de beveiligingshandleiding binaryFormatter voor meer informatie.

  • U kunt de waarschuwing over de BinaryFormatter compilatietijd tijdelijk onderdrukken.SYSLIB0011 We raden u aan uw code grondig te beoordelen op risico's voordat u deze optie kiest. De eenvoudigste manier om de waarschuwingen te onderdrukken, is door de afzonderlijke oproepsite te omringen met #pragma instructies.

    // Now read the purchase order back from disk
    using (var readStream = new FileStream("myfile.bin", FileMode.Open))
    {
        var formatter = new BinaryFormatter();
    #pragma warning disable SYSLIB0011
        return (PurchaseOrder)formatter.Deserialize(readStream);
    #pragma warning restore SYSLIB0011
    }
    

    U kunt de waarschuwing ook onderdrukken in het projectbestand.

    <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net5.0</TargetFramework>
      <!-- Disable "BinaryFormatter is obsolete" warnings for entire project -->
      <NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
    </PropertyGroup>
    

    Als u de waarschuwing in het projectbestand onderdrukt, wordt de waarschuwing onderdrukt voor alle codebestanden in het project. SYSLIB0011 Onderdrukken onderdrukt geen waarschuwingen die worden veroorzaakt door het gebruik van andere verouderde API's.

  • Als u wilt blijven gebruiken BinaryFormatter in ASP.NET-apps, kunt u deze opnieuw inschakelen in het projectbestand. Het wordt echter sterk aangeraden dit niet te doen. Zie de beveiligingshandleiding binaryFormatter voor meer informatie.

    <PropertyGroup>
      <TargetFramework>net5.0</TargetFramework>
      <!-- Warning: Setting the following switch is *NOT* recommended in web apps. -->
      <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
    </PropertyGroup>
    

Zie BinaryFormatter-obsoletion- en disablement-fouten oplossen voor meer informatie over aanbevolen acties.

Betrokken API's

Zie ook