TypenameHandling
Im Prozess der JSON -Serialisierung und der Derivatisierung ist es wichtig, typenameHandling sorgfältig zu handhaben, insbesondere bei der Verarbeitung externer Datenquellen.
TypenameHandling.Alle Obwohl es den Typ -Inferenz im Prozess der tieferen Erleichterung erleichtert, besteht auch ein Sicherheitsrisiko. Wenn das Gerät von JSON stammt, was nicht vertrauenswürdig ist, ermöglicht diese Einstellung Newtonsoft JSON, eine in den angegebene Metadaten angegebene Instanz zu erstellen.
mögliche Gefahr:
Der Angreifer kann ein bösartiges JSON mit dem $ Type -Attribut senden. Dieser Typ kann während des Müllrecyclings automatisch Dateien auf dem Opfersystem löschen und damit die Integrität der Datei gefährdet.
Beispiel:
Berücksichtigen Sie die folgende bösartige JSON -effektive Last:
Wenn Sie diesen JSON ohne geeignete Sicherheitsmaßnahmen erkennen, instanziiert TEMPFILECollection -Typ und versuchen, Dateien gemäß dem angegebenen Parameter zu löschen.Entlastungsmaßnahmen:
<code class="language-json">{ "$type": "System.CodeDom.Compiler.TempFileCollection", "BasePath": "%SYSTEMDRIVE%", "KeepFiles": "False", "TempDir": "%SYSTEMROOT%" }</code>
Um dieses Risiko zu verringern, muss bei der Verwendung des TypenameHandlings. Alle zurück -Sequentialisierung muss ein benutzerdefinierter Service -überprüfter Typ verwendet werden, um den übertragenen Typ zu überprüfen. Dieser Ordner kann die Sicherheit des Typs überprüfen, auf das vor dem Bau einer Instanz verwiesen wird.
Das obige ist der detaillierte Inhalt vonWie kann ich mit TypenameHandling in Newtonsoft JSON sicher behandeln, um Deserialisierungangriffe zu verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!