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é?
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>
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>
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!