La fonction eval() en Python
Python est un langage de programmation interprété de haut niveau. Il a une structure de code propre et une lisibilité avec son indentation significative notable.
La fonction eval()
analyse l’argument de l’expression et l’évalue ensuite comme une expression python.
La syntaxe de la fonction eval()
est fournie ci-dessous.
eval(expression, [globals[, locals]])
La valeur de retour sera basée sur et sera le résultat de l’expression évaluée.
Nous évaluons une addition simple dans l’exemple ci-dessous.
x = 2
eval("x+5")
Production:
7
Les arguments de la fonction eval()
sont une chaîne et des arguments optionnels de globals
et locals
. Si globals
sont fournis, il doit s’agir d’un dictionnaire. Les locals
peuvent être n’importe quel objet cartographique.
Supposons que le dictionnaire globals
soit fourni et que la valeur de la clé ne soit pas fournie avec cela. Une référence est générée au dictionnaire du module intégré builtins
, et insérée sous la section clé avant que l’expression ne commence à analyser.
Cela suggère à peu près que l’expression a généralement un accès complet au module builtins
standard. Si l’objet locals
n’est pas fourni, il revient par défaut au dictionnaire global. De plus, dans un scénario où les deux dictionnaires sont omis, l’expression s’exécute avec les globals
et locals
dans l’environnement où la fonction eval()
est appelée.
Certaines fonctions présentes à l’intérieur du module builtins
peuvent probablement endommager considérablement le système. Mais il est certainement possible de bloquer tout élément suspect.
Par exemple, considérons un exemple pour créer une liste représentant le nombre de cœurs disponibles à l’intérieur du système.
from os import cpu_count
eval("[1, cpu_count()]")
Production:
[1, 8]
eval(input())
demandera à l’utilisateur de saisir la chaîne et de l’exécuter en tant que code. Si le module os
est importé, on peut effectuer toutes sortes d’actions sur l’appareil, comme la suppression de fichiers et la falsification du système.