Найти - Пользователи
Полная версия: Строго ограничить доступные скрипту возможности
Начало » Python для новичков » Строго ограничить доступные скрипту возможности
1 2 3 4
sypper-pit
про лопату это шутка :) (смеяться после слова лопата)
igor.kaist
А что если в PyPy покопаться?!
P.S. Sapphire, хорошая идея кстати. Думал недавно о том, что подобного на питоне нет. Удачи!
Sapphire
Прочитав про PyPy, а потом про CPython, я в итоге набрёл вот на такую страницу документации:
http://docs.python.org/extending/embedding.html
“This can be used for many purposes; one example would be to allow users to tailor the application to their needs by writing some scripts in Python.” - кажется, именно для этого мне и нужен embedded python :)
Только как ограничивать возможности выполняемого скрипта для этих целей, я в этой документации так и не нашёл.

igor.kaist, спасибо :)
Андрей Светлов
А никак :)
Хотели сделать уже раз пять, есть реализация Питона с restricted execution. Почти работает, только глючит. И иногда позволяет “пробить” свою песочницу.
Гвидо в последний раз писал на эту тему весной: http://neopythonic.blogspot.com/2009/03/capabilities-for-python.html
Резюмируя - embedding создан не для того. Но можно аккуратно перебрать сам интерпретатор, оставив только “безопасные” части. Работа не на полчаса.
Sapphire
Прочитал пост гвидо)
Спасибо, Андрей :)
Кажется, разумнее мне будет подыскать просто другой скриптовый язык, для которого проще создавать песочницу. (наконец, узнал, как это называется!)) )
igor.kaist
Sapphire
Кажется, разумнее мне будет подыскать просто другой скриптовый язык, для которого проще создавать песочницу.
Не надо другой, для других языков подобные забавы уже есть. Для питона нет.
Почему бы не перелопатить PyPy, например?!
Sapphire
Ну для питона они тоже ведь есть) В Google Apps, например (гвидо писал про них). Только больно сильно заморочиться надо, чтобы это организовать.

PS: интересно, как реализована питоновая песочница на codepad.org ?
denz
Перед выполнением передавать код классу ast, в самом классе переопределить visit_Import и visit_Call таким образом, чтобы райзить исключение при совпадении со списком “запрещенной литературы”.
Метод потенциально дырявый, но он позволяет подгружать API, и при этом запрещать отдельные аспекты кода. Сами API при этом будут ничем не ограничены, отже возможны дыры.
З.Ы. Лично я бы сделал так, как советует sypper-pit - плодил бы максимально порезанные паравиртуализаторы для каждой песочницы (например есть еще xen), и спокойно спал бы по ночам.
o_o
Немного не в тему, но полностью готовый пример на эту тему (на с++, в качестве скриптового языка идёт с#) есть в sdk для 10 directX. Называется “Scripting”. Там есть все необходимые ограничения.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB