Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
json-sanitizer — json-sanitizer avec CVE-2020-13973 | Kitploit
Outils/GitHubGitHub/epicosy/json-sanitizer
Utilitaires GénérauxOutils de Chiffrement/DéchiffrementAnalyse des VulnérabilitésAnalyse de CodeSécurité Web
GitHubepicosy/json-sanitizer

json-sanitizer

json-sanitizer avec CVE-2020-13973

Voir le dépôt
il y a 2 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

json-sanitizer

Étant donné un contenu de type JSON, le JSON Sanitizer le convertit en JSON valide.

Pour commencer - Contact

Il peut être branché à l'une ou l'autre extrémité d'un pipeline de données pour aider à satisfaire le principe de Postel :

soyez conservateur dans ce que vous faites, soyez libéral dans ce que vous acceptez des autres

Appliqué à un contenu de type JSON provenant d'autrui, il produira un JSON bien formé qui devrait satisfaire tout analyseur que vous utilisez.

Appliqué à votre sortie avant de l'envoyer, il corrigera les erreurs mineures d'encodage et facilitera l'intégration de votre JSON dans du HTML et du XML.

Motivation

Architecture

De nombreuses applications disposent de grandes quantités de code qui utilisent des méthodes ad hoc pour générer des sorties JSON.

Fréquemment, ces sorties passent toutes par une petite quantité de code d'infrastructure avant d'être envoyées sur le réseau. Cette petite quantité de code d'infrastructure peut utiliser cette bibliothèque pour s'assurer que les sorties ad hoc sont conformes aux normes et sûres à passer à des désérialiseurs (trop) puissants comme l'opérateur eval de Javascript.

Les applications disposent également souvent d'API de services web qui reçoivent du JSON provenant de diverses sources. Lorsque ce JSON est créé à l'aide de méthodes ad hoc, cette bibliothèque peut le transformer en une forme facile à analyser.

En branchant cette bibliothèque sur le code qui envoie et reçoit les requêtes et réponses, elle peut aider les architectes logiciels à garantir la sécurité à l'échelle du système et le caractère bien formé des données.

Entrée

Le sanitizer prend un contenu de type JSON et l'interprète comme le ferait eval en JS. Plus précisément, il traite ces constructions non standard.

Le sanitizer corrige la ponctuation manquante, les guillemets de fin et les crochets manquants ou mal appariés. Si une entrée ne contient que des espaces blancs, alors la chaîne JSON valide null est substituée.

Sortie

La sortie est un JSON bien formé tel que défini par RFC 4627. La sortie satisfait ces propriétés supplémentaires :

  • La sortie ne contiendra pas la sous-chaîne (insensible à la casse) "</script" et peut donc être intégrée dans un élément script HTML sans encodage supplémentaire.
  • La sortie ne contiendra pas la sous-chaîne "]]>" et peut donc être intégrée dans une section CDATA XML sans encodage supplémentaire.
  • La sortie est une expression Javascript valide, et peut donc être analysée par la fonction native eval de Javascript (après avoir été entourée de parenthèses) ou par JSON.parse. Plus précisément, la sortie ne contiendra aucun littéral de chaîne avec des sauts de ligne JS intégrés (séparateur de paragraphe U+2028 ou séparateur de ligne U+2029).
  • La sortie ne contient que des valeurs scalaires Unicode valides (pas de paires de substitution UTF-16 isolées) qui sont autorisées en XML sans échappement.

Sécurité

Puisque la sortie est un JSON bien formé, la passer à eval n'aura aucun effet de bord et aucune variable libre ; elle n'est donc ni un vecteur d'injection de code, ni un vecteur d'exfiltration de secrets.

Cette bibliothèque garantit uniquement que la phase chaîne JSON → objet Javascript n'a pas d'effets de bord et ne résout aucune variable libre, et ne peut pas contrôler la façon dont d'autres code côté client interprète ensuite l'objet Javascript résultant. Ainsi, si un code côté client prend une partie des données analysées qui est contrôlée par un attaquant et la repasse à travers un interpréteur puissant comme eval ou innerHTML, ce code côté client pourrait subir des effets de bord involontaires.

root@kitploit:~
var myValue = eval(sanitizedJsonString);  // sûr
var myEmbeddedValue = eval(myValue.foo);  // potentiellement dangereux

De plus, assainir du JSON ne peut pas protéger une application contre les attaques de député confus

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

Performance

La méthode sanitize renverra la chaîne d'entrée sans allouer un nouveau tampon lorsque l'entrée est déjà un JSON valide qui satisfait les propriétés ci-dessus. Ainsi, si elle est utilisée sur une entrée généralement bien formée, elle a un surcoût mémoire minimal.

La méthode sanitize prend un temps O(n) où n est la longueur de l'entrée en unités de code UTF-16.

Télécharger l’outil
ConstructionPolitique
'...'Les chaînes entre guillemets simples sont converties en chaînes JSON.
\xABLes échappements hexadécimaux sont convertis en échappements unicode JSON.
\012Les échappements octaux sont convertis en échappements unicode JSON.
0xABLes littéraux entiers hexadécimaux sont convertis en nombres décimaux JSON.
012Les littéraux entiers octaux sont convertis en nombres décimaux JSON.
+.5Les nombres décimaux sont convertis au format plus strict de JSON.
[0,,2]Les élisions dans les tableaux sont remplies avec null.
[1,2,3,]Les virgules terminales sont supprimées.
{foo:"bar"}Les noms de propriétés non entre guillemets sont mis entre guillemets.
//commentsLes commentaires de style JS sur une ligne et en bloc sont supprimés.
(...)Les parenthèses de groupement sont supprimées.