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 de serialisatie BinaryFormatter standaard verboden bij ASP.NET-toepassingen.

Beschrijving wijzigen

Vanwege beveiligingsproblemen in BinaryFormatter, zijn de volgende methoden nu verouderd en produceren ze een compilatietijdwaarschuwing met id SYSLIB0011. Bovendien zullen in ASP.NET Core 5.0 en latere apps een NotSupportedException optreden, tenzij de webapp de BinaryFormatter-functionaliteit opnieuw heeft ingeschakeld.

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

Geïntroduceerde versie

5,0

Reden voor wijziging

Deze methoden worden gemarkeerd als verouderd in een poging om het gebruik van BinaryFormatter binnen het .NET-ecosysteem af te bouwen.

  • Stop met het gebruik van BinaryFormatter in 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.

Betreffende API's

Zie ook