Ограничение возможностей встроенного экземпляра Python

1

Есть ли способ ограничить возможности скриптов python, запущенных под встроенным интерпретатором? В частности, я хочу, чтобы сценарии не делали такие вещи, как:

  • Импорт модулей расширения python (т.е. модулей .pyd), за исключением тех, которые разрешены приложением.
  • Манипулирование процессами любым способом (т.е. запуск новых процессов или завершение приложения).
  • Любой вид сети.
  • Манипуляция файловой системой (например, создание, изменение и удаление файлов).
Теги:
cpython
python-embedding

3 ответа

2

Нет. Там нет простого способа предотвратить эти вещи на CPython. Ваши варианты:

  • Отредактируйте исходный код CPython и удалите те вещи, которые вам не нужны, - дайте нам глупые методы для всех этих вещей. Очень подвержен ошибкам и сложно сделать. Это подход Google App Engine.
  • Используйте Ограниченный Python. Однако с его помощью вы не можете помешать вашему пользователю исчерпать доступную память или запустить бесконечные циклы Whole-Cpu.
  • Используйте другую реализацию python. PyPy имеет режим песочницы, который вы можете использовать. Jython работает под java, и я думаю, что java может быть изолирован.
  • 0
    Ну, я не беспокоюсь о сбоях скриптов / зависании приложения, особенно когда враждебный плагин загружает и запускает файл из Интернета, изменяет системные настройки и т. Д. Я думаю, что я мог бы отредактировать реализацию CPython для некоторых вещей Я думаю, что просто не скомпилировать модуль для начала будет подходящим, и если я думаю, я мог бы подключить загрузчик модулей, чтобы проверить белый список безопасных модулей pyd. Есть ли где-нибудь информация о простом удалении модулей / объектов из компиляции Python?
0

Что вы хотите от него Пропустить Swallow, чтобы версия Python Двигатель работает.

Модули строго ограничены, ctypes не разрешены, сокеты сопоставлены с какой-либо политикой или другими, другими словами, вы получаете изолированную версию Python в соответствии со своим предложением Java.

Я хотел бы указать, что это делает систему почти бесполезной. Хорошо бесполезно для чего-нибудь более холодного, чем еще одно приложение App Engine. Забудьте о системных модулях для обезьян, и даже доступ к собственному стеку ограничен. Полностью нединамический.

OT: игры обычно вставляют LUA для сценариев, возможно, вы должны это проверить.

0

Возможно, этот может быть полезен. У вас есть пример того, как работать с ast.

  • 0
    "Отказано в доступе", я действительно ненавижу ограничения интернета в колледжах ... проверим это позже, когда вернусь домой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню