Maison >développement back-end >C++ >Comment puis-je gérer en toute sécurité TypenameHandling dans Newtonsoft JSON pour empêcher les attaques de désérialisation?

Comment puis-je gérer en toute sécurité TypenameHandling dans Newtonsoft JSON pour empêcher les attaques de désérialisation?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-31 16:42:10894parcourir

How Can I Securely Handle TypeNameHandling in Newtonsoft Json to Prevent Deserialization Attacks?

typenameHandling

Dans le processus de sérialisation et de dérivé JSON, il est essentiel de gérer soigneusement la Genename, en particulier lors du traitement des sources de données externes.

typenameHandling.Tous bien qu'il facilite l'inférence du type dans le processus de profondericularisation, il existe également un risque de sécurité. Lorsque l'appareil est de JSON, qui n'est pas fiable, ce paramètre permet à Newtonsoft JSO de créer une instance spécifiée dans les métadonnées désignées.

Danger potentiel:

L'attaquant peut envoyer un JSON malveillant contenant l'attribut de type $. Ce type peut supprimer automatiquement des fichiers sur le système de la victime lors du recyclage des ordures, mettant ainsi en danger l'intégrité des fichiers.

Exemple:

Compte tenu de la charge efficace JSON malveillante suivante:

Si vous discernez ce JSON sans mesures de sécurité appropriées, instancié TempFileCollection Type et essayez de supprimer des fichiers en fonction du paramètre spécifié.

Soulagez les mesures:
<code class="language-json">{
   "$type": "System.CodeDom.Compiler.TempFileCollection",
   "BasePath": "%SYSTEMDRIVE%",
   "KeepFiles": "False",
   "TempDir": "%SYSTEMROOT%"
}</code>

Afin de réduire ce risque, lors de l'utilisation du type TynEname. Ce liant peut vérifier la sécurité du type référencé avant de construire une instance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn