Les périls de l'évaluation : pourquoi l'extensibilité ne vaut pas le risque
L'extensibilité est une caractéristique souhaitable en programmation, permettant aux classes de s'adapter sans effort attributs supplémentaires. Cependant, l'utilisation de la fonction eval pour y parvenir peut compromettre la sécurité et introduire des conséquences imprévues.
Les risques d'Eval
Eval, qui évalue une chaîne en tant que code Python, pose plusieurs dangers inhérents :
Une alternative plus sûre
Dans le contexte de la classe Song fournie, setattr offre une solution sécurisée et extensible sans les risques associés à eval :
class Song: attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location') def __init__(self): for att in self.attsToStore: setattr(self, att.lower(), None) def setDetail(self, key, val): if key in self.attsToStore: setattr(self, key.lower(), val)
Cette approche élimine les dangers potentiels de l'évaluation tout en conservant la flexibilité souhaitée dans la gestion des attributs de la chanson.
Conclusion
Pendant l'évaluation peut étendre superficiellement les fonctionnalités du code, son utilisation doit être évitée en raison des risques de sécurité importants qu’elle introduit. Setattr fournit une solution plus sûre et tout aussi efficace qui préserve la lisibilité, le débogage et les performances du code.
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!