Eval 的危险:为什么可扩展性不值得冒险
可扩展性是编程中理想的特性,允许类轻松适应附加属性。然而,使用 eval 函数来实现这一点可能会损害安全性并带来不可预见的后果。
Eval 的风险
Eval 将字符串计算为 Python 代码,会带来以下问题一些固有的危害:
更安全的替代方案
在提供的 Song 类的上下文中,setattr 提供了一个安全且可扩展的解决方案,没有与评估相关的风险:
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)
这种方法消除了评估的潜在危险,同时保持了管理歌曲属性所需的灵活性。
结论
虽然 eval 可能表面上扩展了代码功能,但由于它带来的重大安全风险,应避免使用它。 Setattr 提供了一种更安全且同样有效的解决方案,可以保留代码的可读性、可调试性和性能。
以上是'eval()”的可扩展性值得冒安全风险吗?的详细内容。更多信息请关注PHP中文网其他相关文章!