"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Eval () vs.st.literal_eval (): Quelle fonction Python est plus sûre pour la saisie de l'utilisateur?

Eval () vs.st.literal_eval (): Quelle fonction Python est plus sûre pour la saisie de l'utilisateur?

Publié le 2025-03-26
Parcourir:114

Eval() vs. ast.literal_eval(): Which Python Function Is Safer for User Input?

pesant eval () et ast.literal_eval () dans Python Security

Lors de la gestion de l'entrée de l'utilisateur, il est impératif de prioriser la sécurité. Eval (), une puissante fonction de python, survient souvent comme une solution potentielle, mais les préoccupations entourent ses risques potentiels. Cet article explore les différences entre EVAL () et AST.Literal_eval (), mettant en évidence leurs implications de sécurité.

Comprendre Eval ()

eval () évalue l'entrée dès son entrée, indépendamment de la vérification du type de sous-suive. Cela signifie que la contribution malveillante peut être exécutée avant d'avoir la possibilité de l'atténuer. L'extrait de code suivant démontre cette vulnérabilité:

datamap = eval(input('Provide some data here: '))

AST.Literal_eval () est une alternative SAFT pour évaluer le cod. Il valide l'entrée pour s'assurer qu'elle représente un littéral Python, comme un dictionnaire, une liste ou un tuple. Si l'entrée ne correspond pas à ce format, elle soulève une exception, empêchant le code malveillant de s'exécuter.

essayez: dataMap = AST.Literal_eval (Input ('Fournir des données ici:')) sauf ValueError: return # Manipter l'entrée non valide

try:
    datamap = ast.literal_eval(input('Provide some data here: '))
except ValueError:
    return # Handle invalid input
meilleures pratiques

Pour des raisons de sécurité, il est fortement recommandé d'utiliser AST.Literal_eval () chaque fois que possible, en particulier lorsque vous traitez une entrée non frappée ou incertaine. Eval () doit être évité en raison de son potentiel d'exploitation.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3