Heim > Backend-Entwicklung > C++ > Ist Newtonsoft JSONs TypenameHandling sicher für die Deserialisierung externer JSON -Daten?

Ist Newtonsoft JSONs TypenameHandling sicher für die Deserialisierung externer JSON -Daten?

Susan Sarandon
Freigeben: 2025-01-31 16:31:09
Original
407 Leute haben es durchsucht

Is Newtonsoft JSON's TypeNameHandling Safe for Deserializing External JSON Data?

Newtonsoft JSONs TypeNameHandling: Eine Sicherheitsüberlegung für externe JSON

Die JSON -Bibliothek von Newtonsoft bietet

TypeNameHandling zum Deserialisieren von JSON -enthaltenden Typinformationen. Wenn Sie dies jedoch mit nicht vertrauenswürdigen externen JSON -Quellen verwenden, ist dies erhebliche Sicherheitsrisiken.

Sicherheitsrisiken der Deserialisierung externer JSON mit TypeNameHandling.All

ohne ein SerializationBinder, TypeNameHandling.All ermöglicht es dem Deserializer, Instanzen aller in der JSON -Metadaten angegebenen Typen zu erstellen. Dies eröffnet eine Anfälligkeit für böswillige Akteure, die schädliche Typen in Ihrer Anwendung oder im .NET -Framework senden könnten.

Beispiel Verwundbarkeit:

Betrachten Sie eine einfache Car Klasse:

<code class="language-csharp">public class Car
{
    public string Maker { get; set; }
    public string Model { get; set; }
}</code>
Nach dem Login kopieren

Eine scheinbar harmlose JSON -Nutzlast:

<code class="language-json">{
   "$type": "Car",
   "Maker": "Ford",
   "Model": "Explorer"
}</code>
Nach dem Login kopieren

... würde sich richtig deserialisieren. Ein böswilliger Schauspieler könnte jedoch eine Nutzlast herstellen, die auf eine Systemklasse wie System.CodeDom.Compiler.TempFileCollection:

abzielt
<code class="language-json">{
   "$type": "System.CodeDom.Compiler.TempFileCollection",
   "BasePath": "%SYSTEMDRIVE%",
   "KeepFiles": "False",
   "TempDir": "%SYSTEMROOT%"
}</code>
Nach dem Login kopieren

TempFileCollection, eine serialisierbare Klasse, die temporäre Dateien verwaltet, verfügt über einen Finalizer, der Dateien nach der Müllsammlung löscht. Eine böswillige Nutzlast könnte diesen Finalizer auf willkürliche Dateien im System des Opfers verweisen, was zu einer unbeabsichtigten Löschung der Datei ohne Benutzerinteraktion führt. Dies ist nur ein Beispiel; Viele andere Systemklassen könnten auf ähnliche Weise ausgenutzt werden.

Verwenden Sie daher immer ein SerializationBinder, wenn JSON von externen Quellen des Deserialisierens von externen Quellen mit TypeNameHandling ermöglicht wird, diese Risiken zu mildern. Erlauben Sie nur die Deserialisierung von Typen, denen Sie ausdrücklich vertrauen und kontrollieren.

Das obige ist der detaillierte Inhalt vonIst Newtonsoft JSONs TypenameHandling sicher für die Deserialisierung externer JSON -Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage