Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
OWASP__json-sanitizer_CVE-2020-13973_1-2-0 | Kitploit
Tools/GitHubGitHub/shoucheng3/owasp__json-sanitizer_cve-2020-13973_1-2-0
Allgemeine DienstprogrammeStatische AnalyseVerschlüsselungs-/EntschlüsselungstoolsSchwachstellenanalyseCode-AnalyseWebsicherheit
GitHubshoucheng3/owasp__json-sanitizer_cve-2020-13973_1-2-0

OWASP__json-sanitizer_CVE-2020-13973_1-2-0

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
vor 1 JahrNoch nicht geprüft

json-sanitizer

Bei JSON-ähnlichem Inhalt konvertiert der JSON Sanitizer diesen in gültiges JSON.

Erste Schritte - Kontakt

Dies kann an beiden Enden einer Datenpipeline angebracht werden, um Postels Prinzip zu genügen:

Seien Sie konservativ bei dem, was Sie tun, und liberal bei dem, was Sie von anderen akzeptieren.

Auf JSON-ähnlichen Inhalt von anderen angewandt, erzeugt es wohlgeformtes JSON, das jeden von Ihnen verwendeten Parser zufriedenstellen sollte.

Auf Ihre Ausgabe vor dem Senden angewandt, gleicht es kleinere Kodierungsfehler aus und erleichtert die Einbettung Ihres JSON in HTML und XML.

Motivation

Architektur

Viele Anwendungen enthalten große Mengen an Code, der mit Ad-hoc-Methoden JSON-Ausgaben erzeugt.

Häufig durchlaufen diese Ausgaben eine kleine Menge Framework-Code, bevor sie über das Netzwerk gesendet werden. Diese kleine Menge Framework-Code kann diese Bibliothek nutzen, um sicherzustellen, dass die Ad-hoc-Ausgaben standardkonform sind und sicher an (übermäßig) mächtige Deserialisierer wie den eval-Operator von Javascript übergeben werden können.

Anwendungen haben außerdem häufig Webservice-APIs, die JSON aus verschiedenen Quellen empfangen. Wenn dieses JSON mit Ad-hoc-Methoden erstellt wird, kann diese Bibliothek es in eine Form bringen, die leicht zu parsen ist.

Indem diese Bibliothek in den Code eingebunden wird, der Anfragen und Antworten sendet und empfängt, kann sie Softwarearchitekten dabei helfen, systemweite Sicherheits- und Wohlgeformtheitsgarantien sicherzustellen.

Eingabe

Der Sanitizer nimmt JSON-ähnlichen Inhalt entgegen und interpretiert ihn so, wie es JS eval tun würde. Insbesondere behandelt er diese nicht standardkonformen Konstrukte.

Der Sanitizer korrigiert fehlende Satzzeichen, fehlende End-Anführungszeichen sowie nicht passende oder fehlende schließende Klammern. Wenn eine Eingabe nur Leerzeichen enthält, wird die gültige JSON-Zeichenfolge null eingesetzt.

Ausgabe

Die Ausgabe ist wohlgeformtes JSON gemäß RFC 4627. Die Ausgabe erfüllt diese zusätzlichen Eigenschaften:

  • Die Ausgabe enthält nicht die Teilzeichenfolge (ohne Beachtung der Groß-/Kleinschreibung) "</script", sodass sie ohne weitere Kodierung in ein HTML-Script-Element eingebettet werden kann.
  • Die Ausgabe enthält nicht die Teilzeichenfolge "]]>", sodass sie ohne weitere Kodierung in einen XML-CDATA-Abschnitt eingebettet werden kann.
  • Die Ausgabe ist ein gültiger Javascript-Ausdruck und kann daher von der eingebauten eval-Funktion von Javascript (nach dem Einhüllen in Klammern) oder von JSON.parse geparst werden. Insbesondere enthält die Ausgabe keine Zeichenfolgenliterale mit eingebetteten JS-Zeilenumbrüchen (U+2028 Absatztrenner oder U+2029 Zeilentrenner).
  • Die Ausgabe enthält nur gültige Unicode-Skalarwerte (keine isolierten UTF-16-Surrogate), die unescaped in XML erlaubt sind.

Sicherheit

Da die Ausgabe wohlgeformtes JSON ist, hat die Übergabe an eval keine Nebenwirkungen und keine freien Variablen; sie ist also weder ein Vektor für Code-Injection noch ein Vektor für die Exfiltration von Geheimnissen.

Diese Bibliothek stellt lediglich sicher, dass die Phase von der JSON-Zeichenfolge zum Javascript-Objekt keine Nebenwirkungen hat und keine freien Variablen auflöst; sie kann nicht steuern, wie anderer clientseitiger Code das resultierende Javascript-Objekt später interpretiert. Wenn clientseitiger Code also einen Teil der geparsten Daten, der von einem Angreifer kontrolliert wird, an einen mächtigen Interpreter wie eval oder innerHTML zurückgibt, kann dieser clientseitige Code unbeabsichtigte Nebenwirkungen erleiden.

root@kitploit:~
var myValue = eval(sanitizedJsonString);  // safe
var myEmbeddedValue = eval(myValue.foo);  // possibly unsafe

Darüber hinaus kann das Bereinigen von JSON eine Anwendung nicht vor Confused-Deputy-Angriffen

root@kitploit:~
var myValue = JSON.parse(sanitizedJsonString);
addToAdminstratorsGroup(myValue.propertyFromUntrustedSource);

Leistung

Die sanitize-Methode gibt die Eingabezeichenfolge zurück, ohne einen neuen Puffer zu allozieren, wenn die Eingabe bereits gültiges JSON ist, das die obigen Eigenschaften erfüllt. Wenn sie also für Eingaben verwendet wird, die normalerweise wohlgeformt sind, hat sie einen minimalen Speicher-Overhead.

Die sanitize-Methode benötigt O(n) Zeit, wobei n die Länge der Eingabe in UTF-16-Codeeinheiten ist.

Tool herunterladen
KonstruktVorgehen
'...'Strings in einfachen Anführungszeichen werden in JSON-Zeichenfolgen umgewandelt.
\xABHexadezimale Escapesequenzen werden in JSON-Unicode-Escapes umgewandelt.
\012Oktale Escapesequenzen werden in JSON-Unicode-Escapes umgewandelt.
0xABHexadezimale Integer-Literale werden in JSON-Dezimalzahlen umgewandelt.
012Oktale Integer-Literale werden in JSON-Dezimalzahlen umgewandelt.
+.5Dezimalzahlen werden in das strengere JSON-Format überführt.
[0,,2]Auslassungen in Arrays werden mit null aufgefüllt.
[1,2,3,]Nachgestellte Kommas werden entfernt.
{foo:"bar"}Nicht in Anführungszeichen gesetzte Eigenschaftsnamen werden in Anführungszeichen gesetzt.
//commentsZeilen- und Blockkommentare im JS-Stil werden entfernt.
(...)Gruppierungsklammern werden entfernt.