相关疑难解决方法(0)

Python的eval()在不受信任的字符串上的安全性?

如果我使用eval()评估Python字符串,并且有一个类如下:

class Foo(object):
    a = 3
    def bar(self, x): return x + a
Run Code Online (Sandbox Code Playgroud)

如果我不信任字符串会有什么安全风险?特别是:

  1. eval(string, {"f": Foo()}, {})不安全的?也就是说,你可以从Foo实例到达os或sys或者不安全的东西吗?
  2. eval(string, {}, {})不安全的?也就是说,我可以完全从内置像len和list到达os或sys吗?
  3. 有没有办法让eval上下文中的内置函数不存在?

有一些不安全的字符串,如"[0]*100000000",我不在乎,因为在最坏的情况下,他们会减慢/停止程序.我主要关心的是保护程序外部的用户数据.

显然,eval(string)在大多数情况下,没有自定义词典是不安全的.

python security eval

23
推荐指数
4
解决办法
1万
查看次数

如何在 Python3 的一行中获取 string 和 int 作为输入?

我已经看到了以下链接以获得我的答案,但仍然没有得到预期的答案。

如果我在一行中提供 Name 和 Number,Python 应该将第一个值作为字符串,第二个作为整数。

python string integer input python-3.x

0
推荐指数
1
解决办法
1214
查看次数

标签 统计

python ×2

eval ×1

input ×1

integer ×1

python-3.x ×1

security ×1

string ×1