im Bereich der Derivatisierung von JSON spielt das TypenameHandling -Spiel eine wichtige Rolle bei der Erklärung externer JSON -Daten. Obwohl es automatisch eine bestimmte Art von Instanz erstellen kann, muss es vorsichtig sein, wenn es sich um JSON -Daten aus der Quelle vertrauenswürdiger Quellen handelt.
Die Standardeinstellung typenameHandling. Alle sehen bequem aus, versteckt jedoch die Gefahr. Wenn die JSON -Daten Typ -Metadaten enthalten, wird JSON.net den im angegebenen Typ angegebenen Typ ausprobieren. Obwohl dies harmlos aussieht, kann der böswillige Code mit dieser Funktion ein gefährliches Objekt in Ihrer Anwendung erstellen.
Betrachten Sie dieses Beispiel: Geben Sie JSON -Daten des Autoobjekts an:
Verwenden von typenameHandling.all erstellt JSON.net eine neue Autoinstanz und füllt seine Attribute entsprechend aus. Der Angreifer kann jedoch die JSON -Struktur so ändern
<code>{ "$type": "Car", "Maker": "Ford", "Model": "Explorer" }</code>
Dieser bösartige JSON unterrichtet JSON.NET, ein Tempfilecollect -Objekt zu instanziieren, das Dateien auf dem System des Opfers ohne die unbekannte oder nicht gewillte Zustimmung des Opfers löscht.
<code>{ "$type": "System.CodeDom.Compiler.TempFileCollection", "BasePath": "%SYSTEMDRIVE", "KeepFiles": "False", "TempDir": "%SYSTEMROOT%" }</code>
Das obige ist der detaillierte Inhalt vonWie kann ich JSON mit TypenameHandling in C# sicher deserialisieren, um Sicherheitsrisiken zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!