Maison > développement back-end > C++ > Comment puis-je désérialiser en toute sécurité JSON avec TYPENameHandling en C # pour éviter les risques de sécurité?

Comment puis-je désérialiser en toute sécurité JSON avec TYPENameHandling en C # pour éviter les risques de sécurité?

Barbara Streisand
Libérer: 2025-01-31 16:21:09
original
667 Les gens l'ont consulté

How Can I Safely Deserialize JSON with TypeNameHandling in C# to Prevent Security Risks?

typenameHandling: L'histoire d'avertissement dans le dos de JSON-séquentilation

Dans le domaine de la dérivative de JSON, le jeu de la mention de TypeName joue un rôle vital dans la détermination de la façon d'expliquer les données JSON externes. Bien qu'il puisse créer automatiquement un type d'instance spécifique, il doit être prudent lorsqu'il s'agit de données JSON à partir de la source de sources de confiance.

Le paramètre par défaut TynEnameHandling. Tout semble pratique, mais il masque le danger. Lorsque les données JSON contiennent des métadonnées de type, json.net essaiera le type spécifié dans le type spécifié. Bien que cela semble inoffensif, le code malveillant peut utiliser cette fonction pour créer un objet dangereux dans votre application.

Considérez cet exemple: indiquez les données JSON de l'objet de la voiture:

Utilisation de typenameHandling.all, json.net créera une nouvelle instance de voiture et remplira ses attributs en conséquence. Cependant, l'attaquant peut modifier la structure JSON pour représenter l'objet System.codedom.compiller.TempFileCollection:
<code>{
   "$type": "Car",
   "Maker": "Ford",
   "Model": "Explorer"
}</code>
Copier après la connexion

Ce JSON malveillant demandera à JSON.net d'instancier un objet tempfilecollect, qui supprimera les fichiers sur le système de la victime sans le consentement inconnu ou réticent de la victime.
<code>{
       "$type": "System.CodeDom.Compiler.TempFileCollection",
       "BasePath": "%SYSTEMDRIVE",
       "KeepFiles": "False",
       "TempDir": "%SYSTEMROOT%"
}</code>
Copier après la connexion

Afin de soulager cette vulnérabilité, lorsque vous utilisez TynEnameHandling. Ce liant peut effectuer une vérification et une inspection rigoureuses pour garantir que les types de transmission avant l'instanciation sont sûrs et autorisés. En prenant ces mesures préventives, vous pouvez empêcher le JSON malveillant de nuire à l'intégrité de l'application.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal