Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 28, 2009 21:22:53

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Строго ограничить доступные скрипту возможности

про лопату это шутка :) (смеяться после слова лопата)

Офлайн

#2 Сен. 28, 2009 23:42:12

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Строго ограничить доступные скрипту возможности

Офлайн

#3 Сен. 29, 2009 10:37:46

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Строго ограничить доступные скрипту возможности

А что если в PyPy покопаться?!
P.S. Sapphire, хорошая идея кстати. Думал недавно о том, что подобного на питоне нет. Удачи!



Офлайн

#4 Сен. 30, 2009 15:06:47

Sapphire
От:
Зарегистрирован: 2009-09-28
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Строго ограничить доступные скрипту возможности

Прочитав про 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, спасибо :)



Офлайн

#5 Сен. 30, 2009 16:19:24

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Строго ограничить доступные скрипту возможности

А никак :)
Хотели сделать уже раз пять, есть реализация Питона с restricted execution. Почти работает, только глючит. И иногда позволяет “пробить” свою песочницу.
Гвидо в последний раз писал на эту тему весной: http://neopythonic.blogspot.com/2009/03/capabilities-for-python.html
Резюмируя - embedding создан не для того. Но можно аккуратно перебрать сам интерпретатор, оставив только “безопасные” части. Работа не на полчаса.



Офлайн

#6 Окт. 2, 2009 00:24:26

Sapphire
От:
Зарегистрирован: 2009-09-28
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Строго ограничить доступные скрипту возможности

Прочитал пост гвидо)
Спасибо, Андрей :)
Кажется, разумнее мне будет подыскать просто другой скриптовый язык, для которого проще создавать песочницу. (наконец, узнал, как это называется!)) )



Офлайн

#7 Окт. 2, 2009 09:25:49

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Строго ограничить доступные скрипту возможности

Sapphire
Кажется, разумнее мне будет подыскать просто другой скриптовый язык, для которого проще создавать песочницу.
Не надо другой, для других языков подобные забавы уже есть. Для питона нет.
Почему бы не перелопатить PyPy, например?!



Офлайн

#8 Окт. 2, 2009 15:20:16

Sapphire
От:
Зарегистрирован: 2009-09-28
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Строго ограничить доступные скрипту возможности

Ну для питона они тоже ведь есть) В Google Apps, например (гвидо писал про них). Только больно сильно заморочиться надо, чтобы это организовать.

PS: интересно, как реализована питоновая песочница на codepad.org ?



Офлайн

#9 Окт. 2, 2009 17:22:46

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Строго ограничить доступные скрипту возможности

Перед выполнением передавать код классу ast, в самом классе переопределить visit_Import и visit_Call таким образом, чтобы райзить исключение при совпадении со списком “запрещенной литературы”.
Метод потенциально дырявый, но он позволяет подгружать API, и при этом запрещать отдельные аспекты кода. Сами API при этом будут ничем не ограничены, отже возможны дыры.
З.Ы. Лично я бы сделал так, как советует sypper-pit - плодил бы максимально порезанные паравиртуализаторы для каждой песочницы (например есть еще xen), и спокойно спал бы по ночам.



Офлайн

#10 Окт. 2, 2009 22:00:13

o_o
От:
Зарегистрирован: 2009-10-02
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Строго ограничить доступные скрипту возможности

Немного не в тему, но полностью готовый пример на эту тему (на с++, в качестве скриптового языка идёт с#) есть в sdk для 10 directX. Называется “Scripting”. Там есть все необходимые ограничения.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version