在这个例子中,“ eval()”如何不“危险”

qwerty-

我正在检查一个计算器示例,在使用的示例中,该示例eval()通常很危险,但这是该示例的一部分;

if button == "=":
    #Check carefully how we using the 'dangerous' eval()
    total = eval(str1,{"__builtins__":None},{})
    str1 = str(total)
    print (str1)

我检查了一下,但听不懂。怎么eval(str1,{"__builtins__":None},{})不危险?{"__builtins__":None},{}显然是关于这部分的,但是我不明白。

注意:这str1是一个字符串,我们要添加数字和符号4+5然后eval()处理它。

沙丘

该代码一点也不安全。builtins仅通过访问文字的属性来访问模块相对容易

例如。

result = eval("""[klass for klass in ''.__class__.__base__.__subclasses__()
            if klass.__name__ == "BuiltinImporter"][0].load_module("builtins")""",
    {"__builtins__":None},{})
assert result is __builtins__

细分:

  • ''.__class__.__base__ 是的简写 object
  • object.__subclasses__()列出object解释器中的所有子类(包括导入机制使用的类
  • [klass for klass in ... if klass.__name__ == "BuiltinImporter"][0]-选择BuiltinImporter课程。
  • load_module("builtins")使用BuiltinImporter来获取对builtins模块的访问权限-您正试图限制对其的访问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在这个例子中如何不硬编码函数

来自分类Dev

在这个例子中如何理解constexpr?

来自分类Dev

在这个例子中如何输出 HTML?

来自分类Dev

在这个例子中如何通过 tensorflow 进行回归?

来自分类Dev

在这个例子中如何避免代码重复?

来自分类Dev

在这个例子中如何准确使用 react-navigation

来自分类Dev

不明白 Java Scanner 对象在这个例子中是如何工作的(hasNextInt,next...?)

来自分类Dev

在这个例子中如何连接两个表

来自分类Dev

如何从Android中的URL解析多个JSON对象和数组?我在这个例子中使用我想要的例子,

来自分类Dev

如何在这个例子的解约条款应对?

来自分类Dev

Angular 2 属性绑定究竟是如何工作的?在这个例子中到底发生了什么?

来自分类Dev

一个 HashMap,两个线程 - 在这个例子中我如何确保线程安全?

来自分类Dev

在SQL中的这个例子中如何做动态解析节点?

来自分类Dev

这个例子中的 webSocket.onopen 是回调吗?它是如何工作的?

来自分类Dev

在这个例子中,setjmp调用做什么

来自分类Dev

在这个例子中可以使用promise吗?

来自分类Dev

在这个例子中解释去生成

来自分类Dev

如何解决这个例子中的代码重复,我引入继承来实际解决代码重复

来自分类Dev

在这个例子中的类型声明中这个赋值的意义和目的是什么?

来自分类Dev

困惑在这个例子中的ConcurrentHashMap和HashMap的行为之间的区别

来自分类Dev

我不明白在这个例子中何时调用构造函数

来自分类Dev

为什么在这个例子中“for each”循环不像“for”循环那样工作?

来自分类Dev

为什么 Stripe 在这个例子中不起作用?

来自分类Dev

在这个例子中,需要拆箱时是否使用装箱?

来自分类Dev

在这个例子中是否调用了默认构造函数

来自分类Dev

为什么在这个例子中我会收到带有 argv 的崩溃报告?

来自分类Dev

谁能在这个例子向我解释的PriorityQueue?

来自分类Dev

我可以在这个例子中使用 axios 吗?

来自分类Dev

这个例子中的论点去哪儿了?

Related 相关文章

  1. 1

    在这个例子中如何不硬编码函数

  2. 2

    在这个例子中如何理解constexpr?

  3. 3

    在这个例子中如何输出 HTML?

  4. 4

    在这个例子中如何通过 tensorflow 进行回归?

  5. 5

    在这个例子中如何避免代码重复?

  6. 6

    在这个例子中如何准确使用 react-navigation

  7. 7

    不明白 Java Scanner 对象在这个例子中是如何工作的(hasNextInt,next...?)

  8. 8

    在这个例子中如何连接两个表

  9. 9

    如何从Android中的URL解析多个JSON对象和数组?我在这个例子中使用我想要的例子,

  10. 10

    如何在这个例子的解约条款应对?

  11. 11

    Angular 2 属性绑定究竟是如何工作的?在这个例子中到底发生了什么?

  12. 12

    一个 HashMap,两个线程 - 在这个例子中我如何确保线程安全?

  13. 13

    在SQL中的这个例子中如何做动态解析节点?

  14. 14

    这个例子中的 webSocket.onopen 是回调吗?它是如何工作的?

  15. 15

    在这个例子中,setjmp调用做什么

  16. 16

    在这个例子中可以使用promise吗?

  17. 17

    在这个例子中解释去生成

  18. 18

    如何解决这个例子中的代码重复,我引入继承来实际解决代码重复

  19. 19

    在这个例子中的类型声明中这个赋值的意义和目的是什么?

  20. 20

    困惑在这个例子中的ConcurrentHashMap和HashMap的行为之间的区别

  21. 21

    我不明白在这个例子中何时调用构造函数

  22. 22

    为什么在这个例子中“for each”循环不像“for”循环那样工作?

  23. 23

    为什么 Stripe 在这个例子中不起作用?

  24. 24

    在这个例子中,需要拆箱时是否使用装箱?

  25. 25

    在这个例子中是否调用了默认构造函数

  26. 26

    为什么在这个例子中我会收到带有 argv 的崩溃报告?

  27. 27

    谁能在这个例子向我解释的PriorityQueue?

  28. 28

    我可以在这个例子中使用 axios 吗?

  29. 29

    这个例子中的论点去哪儿了?

热门标签

归档