禁用标准。 Python 沙箱实现中的文件 I/O 和文件 I/O

2024-03-28

我正在尝试设置 Python 沙箱并希望禁止访问标准和文件 I/O。我正在运行的 Python 服务器内运行沙箱。

我已经看过类似的模块RestrictedPython and PyPy;但是,我希望能够在正在运行的 Python 服务器内部编译沙箱代码,而不是通过外部进程。

是否有其他方法可以阻止访问命令,例如print, raw_input, or open?上述模块能否以在运行的 Python 程序中编译沙箱代码的方式使用?

在最坏的情况下,您将如何阻止访问raw_input?

编辑:根据本教程关于安全评估 Python 代码 http://lybniz2.sourceforge.net/safeeval.html,是否有可能传递一个被操纵的builtins module?


对此的粗略共识是,CPython 的复杂性和自省能力使得不可靠的尝试 http://mail.python.org/pipermail/python-dev/2012-March/117175.html将解释器的部分列入黑名单。我相信主要的尝试之一是 tav 的safelite http://tav.espians.com/a-challenge-to-break-python-security.html。这也不是那么难导致CPython崩溃 http://mail.python.org/pipermail/python-dev/2012-March/117339.html,这会打开另一条可用于运行任意代码的路径。在进程内避免任意代码的资源耗尽或 CPU 使用 DoS 可能是不可能的(您需要看门狗、系统限制等)。

对于想要在 Python 中执行沙盒代码的人来说,至关重要的是避免滚动自己的代码(或者简单地修改sys, __builtins__):很容易让自己相信它坚如磐石,但却错过了一些绕过保护的明显解决方法。请记住,Python 曾经包含一个提供此类保护的模块,但即使该模块也存在明显的问题,可以逃脱其限制。 IIRC,它很容易将非限制对象(通过内省)捕获到限制环境中。

也就是说,py沙箱 https://github.com/haypo/pysandbox由一位核心 Python 开发人员编写,他相信在限制时是安全的,例如IO(它包含了许多以前的研究)并且可以像您想要的那样在进程中运行(尽管功能较少,例如针对 CPU 和内存使用的 DoS 保护)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用标准。 Python 沙箱实现中的文件 I/O 和文件 I/O 的相关文章

随机推荐

  • 如何在nodejs中验证rabbitmq?

    错误 握手被服务器终止 403 ACCESS REFUSED 消息 ACCESS REFUSED 使用身份验证拒绝登录 旋转机制平原 有关详细信息 请参阅代理日志文件 我单独尝试了 authMechanism PLAIN AMQPLAIN
  • 后台线程c++中的grpc服务器

    我正在尝试在 MFC 应用程序的线程中运行 grpc 服务器 我有 直接来自 GRPC 示例的 grpc 部分 MyAppDlg h include
  • 将项目绑定到 ListBox 的多列中

    我正在尝试将数据添加到多列列表框中 我做到了 但在尝试从列表框中检索数据时遇到了难题 有没有办法将对象而不是文本放入列表框行中
  • Qt 错误:无法打开输出文件调试

    今天我在调试你的程序时 突然因为停电 我的电脑异常关机 现在 当我编译该程序时 它给了我两个错误 1 error cannot open output file debug Myprogram exe Invalid argument 1
  • 艰难地学习 Python:练习 46

    我在设置项目框架时遇到问题 因为现在指南要求我仅使用 Linux 命令 而我使用的是 Windows 整个指南直到该项目与 Windows 没有兼容性问题 直到练习 46 中的一行代码为止 我能够做到这一点 mkdir p projects
  • 如何在Play Framework中手动抛出错误页面?

    如何手动抛出404 or 500Play 框架 1 2 x 中出现错误 我目前正在渲染404 html and 500 html模板使用renderTemplate 方法 但我该如何以正确的方式做到这一点呢 Play Controller
  • Eclipse CDT 索引器是否仅限于源和标头的常见文件类型?

    我正在开发一个涉及 TOM 文件 t 扩展名 的项目 这些文件被编译成 c 文件 现在 我已经告诉我的 Eclipse 将它们视为 C 源文件 但 CDT 索引器似乎不想触及它们 是否可以告诉它考虑其他文件类型 注意 TOM 文件看起来就像
  • 绘制两个不同长度的列表

    我有两个价格不同的清单 第一个列表是 2008 2018 年 第二个列表是 2010 2018 年 如果 X 轴为 2008 年至 2018 年 第二个列表从 2010 年开始 我如何绘制它们 我有以下作为简短代码的示例 from matp
  • 如何在 Spring MVC (JPA) 中将实体对象列表转换为页面对象?

    我有一个List的实体 我如何将其转换为Page使用 Spring MVC 4 和 Spring Data JPA 的对象 有一个Page执行 http docs spring io spring data commons docs cur
  • 导航控制器后退按钮可转到上一屏幕之前的屏幕

    我想知道是否可以使用导航控制器按钮返回到上一页 现在 我已经使用此代码定制了按钮 self navigationItem leftBarButtonItem UIBarButtonItem alloc initWithTitle mainL
  • 如何在 R 中将度分秒转换为十进制?

    我有这个数据框 Lat Long 59 44 50 151 45 11 59 49 28 154 52 56 59 46 42 150 45 15 如何将其转换为十进制列 纬度的单位为 dd mm ss 长的单位为 ddd mm ss 我在
  • 如何使用 JSONata 将嵌套对象展平为单深度对象?

    我是 JSONata 新手 在创建展平函数时遇到一些麻烦 我想把这个输入 user key value map CreatedDate 123424 Department Name XYZ 进入这个 user key value map C
  • 在 OpenCV 中使用 FindExtrinsicCameraParams2

    我在对象坐标和相应的图像点 在图像平面上 中有 4 个共面点 我想计算物平面相对于相机的相对平移和旋转 FindExtrinsicCameraParams2 应该是解决方案 但我在使用它时遇到了麻烦 编译时不断出现错误 有人在OpenCV中
  • 显示 WordPress 中最新的搜索词

    有没有办法显示我网站上最近完成的搜索词 我想显示访问者最近执行的 3 5 个搜索词 以便鼓励其他用户也搜索某些内容 Edit 在这种情况下 如果有人搜索新内容 刷新页面可能会显示一组新的搜索词 我确信至少有一些插件可以帮助您解决此问题 我会
  • ngx-bootstrap 日期选择器不起作用

    我正在学习 Angular2 和 Bootstrap4 我的公司使用以下网站 http valor software com ngx bootstrap datepicker http valor software com ngx boot
  • Blazor - Web 程序集加载时间

    我开发了 Blazor Server 服务器应用程序 客户显然不喜欢 无法重新连接到服务器 重新加载页面以恢复功能 的消息 这就是我尝试探索迁移到 Web Assembly 的原因 我正在努力 如何加快 Web 程序集加载时间 因为主页无法
  • C++ 预处理器输出中的 是什么?

    Summary C 预处理器输出包括一些行
  • 将固定宽度文本文件导入sqlite

    将固定宽度文本文件导入到 sqlite 表中 最好不使用外围软件 的好方法是什么 例如 指定每个字段的宽度 Field 1 10 characters starting with the second character Field 2 5
  • 如何在C#中调用需要证书的Web服务?

    我需要与具有以下权限的第三方进行通信 asmx网络服务 此 Web 服务使用 https 我有所需的证书 pfx 第一次尝试使用添加此服务时Add Service Reference在 Visual Studio 中 我收到错误 我通过将证
  • 禁用标准。 Python 沙箱实现中的文件 I/O 和文件 I/O

    我正在尝试设置 Python 沙箱并希望禁止访问标准和文件 I O 我正在运行的 Python 服务器内运行沙箱 我已经看过类似的模块RestrictedPython and PyPy 但是 我希望能够在正在运行的 Python 服务器内部