J'ai une situation avec un certain code où eval()
est apparu comme une solution possible. Maintenant, je n'ai jamais eu à utiliser eval()
mais j'ai trouvé de nombreuses informations sur le danger potentiel qu'il peut représenter. Cela dit, je suis très prudent quant à son utilisation.
Ma situation est la suivante : un utilisateur saisit des données :
datamap = input('Provide some data here: ')
Donde datamap
doit être un dictionnaire. J'ai fait des recherches et j'ai trouvé que eval()
pourrait s'en sortir. J'ai pensé que je pourrais vérifier le type d'entrée avant d'essayer d'utiliser les données et que ce serait une précaution de sécurité viable.
datamap = eval(input('Provide some data here: ')
if not isinstance(datamap, dict):
return
J'ai lu la documentation et je ne sais toujours pas si cela est sûr ou non. Est-ce que l'évaluation évalue les données dès qu'elles sont saisies ou après l'exécution de l'opération ? datamap
variable est appelée ?
Est-ce que le ast
du module .literal_eval()
la seule option sûre ?