非常教程

Python参考手册

限制执行 | Restricted Execution

Restricted Execution

警告

在Python 2.3中,这些模块由于各种已知且不易解决的安全漏洞而被禁用。这些模块仍然记录在这里以帮助阅读使用rexecBastion模块的旧代码。

受限制的执行是Python中的基本框架,它允许分离可信和不可信代码。该框架基于可信Python代码(管理程序)可以创建具有有限权限的“填充单元”(或环境)并在该单元内运行不可信代码的概念。不受信任的代码不能脱离其单元,并且只能通过受信任代码定义和管理的接口与敏感的系统资源进行交互。术语“受限制的执行”比“安全的Python”更受青睐,因为真正的安全性很难定义,并且取决于受限环境的创建方式。请注意,受限制的环境可以嵌套,内部单元创建子单元的权限较小但不会更大。

Python有限执行模型的一个有趣之处在于,呈现给不可信代码的接口通常与呈现给可信代码的接口具有相同的名称。因此,不需要学习专门的接口来编写旨在在受限环境中运行的代码。由于填充单元格的确切性质由管理员决定,因此可能会施加不同的限制,具体取决于应用程序。例如,对于不受信任的代码读取指定目录中的任何文件可能被认为是“安全的”,但从不写入文件。在这种情况下,管理员可能会重新定义内置open()函数,以便在模式参数存在时引发异常'w'。它也可能chroot()文件名执行类似操作参数,使得root始终相对于文件系统的某个安全“沙箱”区域。在这种情况下,不受信任的代码仍然会open()在其环境中看到一个内置函数,并具有相同的调用接口。语义也是一样的,IOError当主管确定使用了一个不允许的参数时会引发s。

Python运行时基于__builtins__全局变量中对象的身份确定特定代码块是否在受限执行模式下执行:如果这是标准__builtin__模块的(字典),则代码被视为不受限制,否则它被认为是受限制的。

在限制模式下执行的Python代码面临着许多限制,这些限制旨在防止它从填充的单元格中逃脱。例如,函数对象属性func_globals和类和实例对象属性__dict__不可用。

两个模块提供了设置受限执行环境的框架:

  • 30.1. rexec - 受限制的执行框架
    • 30.1.1。RExec对象
    • 30.1.2。定义受限制的环境
    • 30.1.3。一个例子
  • 30.2.Bastion - 限制访问对象

另请参阅

Grail主页用Python编写的互联网浏览器Grail使用这些模块来支持Python小程序。网站上提供了有关在Grail中使用Python的受限执行模式的更多信息。

限制执行 | Restricted Execution相关

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法