„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich „entspanntes“ JSON sicher analysieren, ohne „eval“ zu verwenden?

Wie kann ich „entspanntes“ JSON sicher analysieren, ohne „eval“ zu verwenden?

Veröffentlicht am 07.11.2024
Durchsuche:603

How Can I Safely Parse \

Parsen von „entspanntem“ JSON ohne riskante Auswertung

JSON, ein weit verbreitetes Datenaustauschformat, erfordert eine strikte Syntax mit Schlüsseln in Anführungszeichen. Bei bestimmten Anwendungen kann es jedoch zu „entspanntem“ JSON mit Schlüsseln ohne Anführungszeichen kommen. Vom Parsen solcher Daten mithilfe von eval wird aufgrund von Sicherheitsrisiken abgeraten.

Böses Eval vermeiden

Eine Alternative zu eval ist ein auf regulären Ausdrücken basierender Ansatz, der den JSON vor dem Parsen bereinigt . Diese Methode scannt die JSON-Zeichenfolge und ersetzt alle nicht in Anführungszeichen gesetzten Schlüssel durch in Anführungszeichen gesetzte Schlüssel, um die Einhaltung der Standard-JSON-Syntax sicherzustellen, ohne die Sicherheit zu beeinträchtigen.

Beispielimplementierung

Um diesen Ansatz zu implementieren, Befolgen Sie diese Schritte:

var badJson = "{muh: 2}";

// Sanitize the JSON using regular expression replace
var correctJson = badJson.replace(/(['"])?([a-z0-9A-Z_] )(['"])?:/g, '"$2": ');

// Parse the sanitized JSON using JSON.parse
var obj = JSON.parse(correctJson);

Fazit

Die Verwendung regulärer Ausdrücke zur Bereinigung von entspanntem JSON ermöglicht eine nahtlose Analyse und vermeidet gleichzeitig die potenziellen Sicherheitsrisiken, die mit der Auswertung verbunden sind.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3