Python : rendre eval sécurisé pour l'API de la calculatrice
La question cherche des conseils sur la mise en œuvre d'une « API de calculatrice » en Python à l'aide de la fonction eval et s’enquiert de ses préoccupations en matière de sécurité. Pour garantir la sécurité de l'utilisation d'eval à cette fin, il est crucial de comprendre ses risques potentiels et de mettre en œuvre les mesures appropriées.
Comme indiqué dans la réponse, eval présente des risques de sécurité en raison de sa capacité à exécuter du code Python arbitraire, ce qui donne aux utilisateurs la possibilité de manipuler des variables locales et d’accéder à des informations sensibles. Pour atténuer ces risques, la solution proposée implique l'utilisation d'un environnement isolé avec un accès restreint aux ressources système, comme le montre l'exemple fourni :
<code class="python">env = {} env["locals"] = None env["globals"] = None env["__name__"] = None env["__file__"] = None env["__builtins__"] = None eval(users_str, env)</code>
Bien que cette approche tente d'éviter les interférences avec les variables locales, elle est reconnue qu'il n'est peut-être pas assez complet. La réponse affirme à juste titre qu'un pirate informatique intelligent pourrait encore trouver des moyens de contourner ces précautions.
Par conséquent, pour une sécurité renforcée, il est recommandé d'éviter d'utiliser eval pour des expressions complexes ou du code fourni par l'utilisateur. Au lieu de cela, envisagez d'utiliser un package d'analyse tel que ply ou pyparsing pour gérer l'entrée et fournir plus de contrôle sur l'environnement d'exécution du code. Ces packages offrent une approche structurée pour analyser les expressions et garantir leur 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!