Maison > développement back-end > Tutoriel Python > `eval()` vs `ast.literal_eval()` : lequel est le plus sûr pour évaluer les entrées de l'utilisateur ?

`eval()` vs `ast.literal_eval()` : lequel est le plus sûr pour évaluer les entrées de l'utilisateur ?

Linda Hamilton
Libérer: 2024-12-19 03:01:28
original
758 Les gens l'ont consulté

`eval()` vs. `ast.literal_eval()`: Which is Safer for Evaluating User Input?

Utilisation de eval() de Python vs ast.literal_eval()

Requête : Lors de l'évaluation des données fournies par l'utilisateur , est-il plus sûr d'utiliser eval() ou ast.literal_eval() pour garantir qu'il correspond aux données souhaitées tapez ?

Solution :

Lorsque vous travaillez avec des données fournies par l'utilisateur, il est crucial de prendre en compte les risques de sécurité. L'utilisation de eval() peut être dangereuse car elle évalue toute entrée de chaîne en tant que code Python, conduisant potentiellement à des actions inattendues ou malveillantes.

Dans le scénario décrit, datamap = eval(input('Fournissez des données ici : ') ) est particulièrement risqué car il évalue l'entrée dès que la fonction est appelée, ne laissant aucune possibilité de valider son type avant l'exécution.

Une alternative plus sûre est ast.literal_eval(), qui vérifie les types de données Python valides (par exemple, les dictionnaires) avant l'évaluation. Il lève une exception si l'entrée n'est pas un type valide, empêchant ainsi l'exécution de code potentiellement dangereux.

Par conséquent, lors de l'évaluation des types de données Python littéraux à partir des entrées utilisateur, il est fortement recommandé d'utiliser ast.literal_eval() plutôt que eval. () pour garantir la sécurité des données et prévenir les failles de sécurité.

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