Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschappen | Weergegeven als | 
|---|---|
| Regel-id | CA2305 | 
| Titel | Gebruik geen onveilige deserializer LosFormatter | 
| Categorie | Beveiliging | 
| Oplossing is brekend of niet-brekend | Niet-brekend | 
| Standaard ingeschakeld in .NET 9 | Nee | 
Oorzaak
Er System.Web.UI.LosFormatter is een deserialisatiemethode aangeroepen of waarnaar wordt verwezen.
Beschrijving van regel
Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren. Een aanval op een onveilig deserializer kan bijvoorbeeld opdrachten uitvoeren op het onderliggende besturingssysteem, communiceren via het netwerk of bestanden verwijderen.
Met deze regel worden aanroepen of verwijzingen naar deserialisatiemethode gevonden System.Web.UI.LosFormatter .
              LosFormatter is onveilig en kan niet veilig worden gemaakt. Zie de beveiligingshandleiding binaryFormatter voor meer informatie.
Schendingen oplossen
- Gebruik in plaats daarvan een beveiligde serialisatiefunctie en sta een aanvaller niet toe een willekeurig type op te geven dat moet worden gedeserialiseerd. Zie Voorkeursalternatieven voor meer informatie.
 - Maak de geserialiseerde gegevens manipulatiebestendig. Na serialisatie tekent u de geserialiseerde gegevens cryptografisch. Voordat deserialisatie wordt gedeserialiseerd, valideert u de cryptografische handtekening. Beveilig de cryptografische sleutel tegen openbaarmaking en ontwerp voor sleutelrotaties.
 
Wanneer waarschuwingen onderdrukken
              LosFormatter is onveilig en kan niet veilig worden gemaakt.
Voorbeelden van pseudocode
Schending
using System.IO;
using System.Web.UI;
public class ExampleClass
{
    public object MyDeserialize(byte[] bytes)
    {
        LosFormatter formatter = new LosFormatter();
        return formatter.Deserialize(new MemoryStream(bytes));
    }
}
Imports System.IO
Imports System.Web.UI
Public Class ExampleClass
    Public Function MyDeserialize(bytes As Byte()) As Object
        Dim formatter As LosFormatter = New LosFormatter()
        Return formatter.Deserialize(New MemoryStream(bytes))
    End Function
End Class