Heim >Backend-Entwicklung >C++ >Wie kann ich JSON mit TypenameHandling in C# sicher deserialisieren, um Sicherheitsrisiken zu vermeiden?
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>Um diese Sicherheitsanfälligkeit zu lindern, verwenden Sie bei Verwendung typenameHandling.all zurück -Serialisierung JSON sollten Sie einen benutzerdefinierten Serialisierungsbinder verwenden. Dieser Ordner kann eine strenge Überprüfung und Inspektion durchführen, um sicherzustellen, dass die übertragenen Arten vor der Instanziierung sicher und zulässig sind. Durch diese vorbeugenden Maßnahmen können Sie verhindern, dass bösartige JSON die Integrität der Anwendung beschädigt.
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!