草庐IT

python - 用于列表反序列化的 Python 'eval' 的安全性

在这种情况下是否会发生任何安全漏洞:eval(repr(unsanitized_user_input),{"__builtins__":None},{"True":True,"False":False})其中unsanitized_user_input是一个str对象。该字符串是用户生成的,可能很讨厌。假设我们的Web框架没有让我们失望,它是来自Python内置函数的真正诚实的str实例。如果这很危险,我们可以对输入采取任何措施以使其安全吗?我们绝对不想执行字符串中包含的任何内容。另见:FunnyblogpostaboutevalsafetyPreviousQuestionBlog:F

python - 在 Python 中,为什么在使用 `eval` 时不出现警告?

以下代码按预期打印警告:>>>importwarnings>>>deff():...warnings.warn('Deprecated',DeprecationWarning)...print('Infunctionf()')...>>>f()__main__:2:DeprecationWarning:DeprecatedInfunctionf()但是,使用eval时,不会出现警告信息:>>>eval('f()')Infunctionf()为什么警告在这两种情况下表现不同? 最佳答案 Whydowarningsbehavediffe

Python eval 在函数内部不起作用

这个问题在这里已经有了答案:Creatingdynamicallynamedvariablesinafunctioninpython3/Understandingexec/eval/localsinpython3(2个答案)关闭5年前。为什么Python的eval在函数内部不起作用?相同的eval(compile(cmd))代码在全局环境中工作,但在foo函数内部不起作用。简单的例子:fn='/tmp/tmp'mode='single'deffoo(cmd,fn,mode):eval(compile(cmd,fn,mode))#这是输出和错误信息:globalscope:cmd=x=1

python - 在 Python、MATLAB 等中使用 eval

这个问题在这里已经有了答案:Whyisusing'eval'abadpractice?(8个答案)关闭9年前。我知道不应该使用eval。出于所有显而易见的原因(性能、可维护性等)。我的问题更多-它有合法用途吗?应该在哪里使用它而不是以另一种方式实现代码。由于它以多种语言实现并且可能导致糟糕的编程风格,我认为它仍然可用是有原因的。

python - 如何使用 tf.estimator 返回预测和标签(使用 predict 或 eval 方法)?

我正在使用Tensorflow1.4。我创建了一个自定义的tf.estimator来进行分类,如下所示:defmodel_fn():#Someoperationshere[...]returntf.estimator.EstimatorSpec(mode=mode,predictions={"Preds":predictions},loss=cost,train_op=loss,eval_metric_ops=eval_metric_ops,training_hooks=[summary_hook])my_estimator=tf.estimator.Estimator(model_f

Python 的 eval() 和 globals()

我正在尝试使用eval()执行一些函数,我需要为它们创建某种运行环境。文档中说您可以将全局变量作为第二个参数传递给eval()。但在我的情况下似乎不起作用。这是简化的示例(我尝试了两种方法,声明变量全局和使用globals(),但两者都不起作用):文件script.py:importtestglobaltest_variabletest_variable='test_value'g=globals()g['test_variable']='test_value'eval('test.my_func()',g)文件test.py:defmy_func():globaltest_varia

python - Python中exec和eval的使用

所以我明白了exec和eval以及compile的作用。但为什么我需要使用它们?我不清楚使用场景。任何人都可以给我一些例子,以便我更好地理解这个概念。因为我知道这都是理论。 最佳答案 我将给出一个示例,其中我使用了eval并且我认为它是最佳选择。我正在编写一个简单的软件测试实用程序……用来测试学生的练习是否符合作业要求。目标是为一个简单的配置文件提供一种方法作为测试规范(解决使用编程语言描述/记录/实现基本编程任务的测试用例的“先有鸡还是先有蛋”的问题).我的工具基于标准库中的ConfigParser。但是,我确实希望能够表示任意P

python - 为什么 ast.literal_eval ('5 * 7' ) 失败了?

为什么5*7的文字计算失败,而5+7却没有?importastprint(ast.literal_eval('5+7'))#->12print(ast.literal_eval('5*7'))#->Traceback(mostrecentcalllast):...ValueError:malformednodeorstring:documentation不解释这个。我在SO上回答了这个问题后发现了这个问题:Gettingtheresultofastring. 最佳答案 ast.literal_eval()接受评估数据中的+因为5+2

python - 在 python 3 中的函数中创建动态命名变量/理解 python 3 中的 exec/eval/locals

首先,我要说的是,我阅读了很多关于创建动态命名变量的类似主题的帖子,但它们大多与Python2相关,或者它们假定您正在使用类。是的,我读了BehaviorofexecfunctioninPython2andPython3.我也知道创建动态命名的变量在99%的时间里是一个坏主意,字典是获得的方式,但我只想知道它是否仍然可能以及exec和locals在python中的工作方式3.我想展示一些示例代码来说明我的问题(fibonacci计算斐波那契数,ListOfLetters提供["A","B",...]):deffunctionname():forindex,buchstabeinenum

python - 有没有办法为 Python 的 eval 保护字符串?

关于在不安全的字符串上使用Python的eval有很多关于SO的问题(例如:SecurityofPython'seval()onuntrustedstrings?,Python:makeevalsafe)。一致的回答是这是个坏主意。但是,我发现关于哪些字符串可以被认为是安全的(如果有的话)的信息很少。现在我想知道是否有可用的“安全字符串”定义(例如:仅包含小写ascii字符或任何符号+-*/()的字符串)。我发现的漏洞通常依赖于_.,:[]'"等。这种方法是否安全(用于图形绘制Web应用程序)?否则,我想使用AlexMartelli建议的解析包是唯一的方法。编辑:不幸的是,既没有答案可