首页 / 知识
关于python:“ safe_eval”真的安全吗?
2023-04-13 06:09:00

Is “safe_eval” really safe?我正在寻找一个"安全"的评估函数,以实现类似于电子表格的计算(使用numpy / scipy)。
由于明显的无法解决的安全问题,自2.3起,已从Python中删除了执行此功能的功能(rexec模块)。 有一些第三方黑客声称可以做到这一点-我发现的最周到的解决方案是 如果使用此命令(或类似方法)来保护自己免受恶意代码的侵害,我是否相当安全?还是我坚持编写自己的解析器? 有谁知道更好的选择吗? 编辑:我刚刚发现了RestrictedPython,它是Zope的一部分。 欢迎对此发表任何意见。
如果您只需要用Python写下并读取一些数据结构,而不需要执行自定义代码的实际能力,那么这是一个更好的选择: 保证不执行任何代码,仅评估静态数据结构:字符串,列表,元组,字典。 我想取决于您对保险柜的定义。许多安全性取决于您传入的内容以及上下文中允许通过的内容。例如,如果传入文件,则可以打开任意文件:
此外,环境非常受限制(您不能传递模块),因此,您不能简单地传递诸如re或random之类的实用程序功能的模块。 另一方面,您不需要编写自己的解析器,只需为python ast编写自己的评估器即可:
这样,希望您可以实现安全导入。另一个想法是使用Jython或IronPython并利用Java / .Net沙箱功能。 编写自己的解析器可能很有趣!这可能是一个更好的选择,因为人们希望在输入公式时使用熟悉的电子表格语法(Excel等),而不是Python。我不熟悉safe_eval,但我可以想象像这样的东西肯定有被利用的潜力。 尽管该代码看起来很安全,但我始终认为,只要有足够的时间,任何有足够动力的人都可以破坏它。我确实认为要做到这一点需要相当大的决心,但是我相对确定可以做到。
所需的功能在编译器语言服务中,请参阅
丹尼尔 Sanbox资讯 |
最新内容
相关内容
python的三角函数在哪?
python的三角函数在哪?,标准,培训,函数,反函数,方法,下面,以上,更多,内容,python中的三角函数在python的标准库math中,math已经包含在你的标python中函数怎么表示?
python中函数怎么表示?,名称,标准,培训,代码,函数,圆括号,字符串,表达式,选择性,自变量,python中函数定义规则:·函数代码块以def关键词开头,后python如何让程序暂停执行和继续执
python如何让程序暂停执行和继续执行?,暂停,培训,程序,继续,空格键,函数,以上,操作,方法,更多,python让程序继续执行的方法:一、使用到的函数python有函数重载吗?
python有函数重载吗?,情况,代码,设计,名字,培训,函数,参数,功能,类型,两个,python中没有函数重载。为了考虑为什么python不提供函数重载,首先python map()函数怎么用?
python map()函数怎么用?,培训,函数,序列,列表,参数,元素,示例,字符串,语法,例子,pythonmap()会根据提供的函数对指定序列做映射。第一个参数python常用函数包有哪些?
python常用函数包有哪些?,项目,数据,标准,系统,基础,代码,地址,分析,检测,网站,一些python常用函数包:1、Urllib3Urllib3是一个Python的HTTP客怎样用python计算矩阵乘法?
怎样用python计算矩阵乘法?,位置,矩阵,培训,一致,乘法,数组,函数,示例,作用,标量,python中计算矩阵乘法的方法:1、使用np.multiply()函数计算Python中怎么计算圆周长?
Python中怎么计算圆周长?,公式,培训,圆周,半径,浮点,以上,结果,更多,内容,python中怎么计算圆周长呢?1、首先输入圆的半径2、其次将输入的半python函数里面形参和实参一样吗?
python函数里面形参和实参一样吗?,培训,函数,参数,里面,变量,实际,形式,全称,示例,后面,python函数里面形参和实参不一样。形参全称是形式参python如何获取程序执行时间?
python如何获取程序执行时间?,代码,培训,标准,程序,方法,中间,使用方法,以上,手册,更多,python获取程序执行时间的方法:1、使用time.clock()方python中的open函数如何编码?
python中的open函数如何编码?,数据,系统,可取,培训,文件,参数,函数,时候,表示,模式,python中的open函数可以通过在打开文件时添加encoding参python中什么叫递归函数?
python中什么叫递归函数?,规模,培训,函数,嵌套,内部,不是,实例,特性,层次,效率,1、什么叫递归函数?在函数内部,可以调用其他函数。如果一个函