LINUX.ORG.RU

Безопасное исполнение сторонних скриптов в Питоне. Как?


0

0

Есть ли какие-то готовые удобные и быстрые реализации изолированного исполнения сторонних пользовательских скриптов (на любом языке) в Питоне? И чтобы оно было мультиплатформенно и GPL-но?

★★★★★

Ответ на: комментарий от KRoN73

> Опять Форт писать придётся, походу :) Теперь для Питона...

Да тебя хлебом не корми, дай еще один Форт написать.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Да тебя хлебом не корми, дай еще один Форт написать.

Ну так дай альтернативу :)

Задача - в онлайне на обычно python-2.5.x принять скрипт-код от случайного пользователя и исполнить его так, чтобы тот ничего не смог навредить.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

> Задача - в онлайне на обычно python-2.5.x принять скрипт-код от случайного пользователя и исполнить его так, чтобы тот ничего не смог навредить.

Это не задача... что должен делать этот скрипт? А то просто пусти его в чруте или песочнице SELinux.

Я не вижу, чем тут поможет Форт.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Это не задача... что должен делать этот скрипт?

Расширять функционал сервера и других клиентов :)

...

Это я понемногу к openworlds подступаю.


>А то просто пусти его в чруте или песочнице SELinux.


Не покатит. Скрипт одного клиента должен уметь безопасно выполняться не только на сервере, но и на другом клиенте.

>Я не вижу, чем тут поможет Форт.


1. Транслятор с него пишется легко и позволяет при грамотном подходе избежать большой потери производительности.

2. Его транслятор позволяет произвольно изолироваться от среды исполнения.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

>Задача - в онлайне на обычно python-2.5.x принять скрипт-код от случайного пользователя и исполнить его так, чтобы тот ничего не смог навредить.

А как там Jython поживает?

Absurd ★★★
()
Ответ на: комментарий от KRoN73

> Скрипт одного клиента должен уметь безопасно выполняться не только на сервере, но и на другом клиенте.

IronPython на Mono.

> 1. Транслятор с него пишется легко и позволяет при грамотном подходе избежать большой потери производительности.

Транслятор - в машкод сразу? Потому что в противном случае получаем еще один сделанный на коленке интерпретатор почти что байткода.

> 2. Его транслятор позволяет произвольно изолироваться от среды исполнения.

Транслятор? VM Питона тоже это позволяет, теоретически - урезать модули типа os, запретить подгрузку модулей и вуаля.

tailgunner ★★★★★
()
Ответ на: комментарий от Absurd

>А как там Jython поживает?

На клиенте - хреново :) Я отказался от использования Java на клиенте.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

>Задача - в онлайне на обычно python-2.5.x принять скрипт-код от случайного пользователя и исполнить его так, чтобы тот ничего не смог навредить.
а вот помнится в новости про battle for wesnoth, там хотели отказаться от скриптов на питоне из-за проблем с безопастностью

можно как-нить virtualenv или buildout для каждого пользователя делать, но это не поможет

dimon555 ★★★★★
()
Ответ на: комментарий от tailgunner

>Транслятор - в машкод сразу?

Нет. В тот же Питон. «Без большой потери производительности» - имеется в виду по сравнению с родным скриптингом.

>VM Питона тоже это позволяет, теоретически - урезать модули типа os, запретить подгрузку модулей и вуаля.


Но я не знаю, как это сделать просто. И готового решения, как было сказано выше, нет. А как сделать Форт - знаю :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

>> Транслятор - в машкод сразу?

> Нет. В тот же Питон.

Держите меня трое... %) И скриптовать на Форте? Встрой лучше Mono - по крайней мере, опробованный метод.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Держите меня трое...

Да зачем тебя держать-то, не понимаешь - не надо :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Когда я последний раз смотрел на IronPython он довольно сильно отставал по версии от CPython. А сейчас как дела обстоят? И там еще лицензия какая-то странная.

mono ★★★★★
()
Ответ на: комментарий от KRoN73

>Задача - в онлайне на обычно python-2.5.x принять скрипт-код от случайного пользователя и исполнить его так, чтобы тот ничего не смог навредить.

посмотреть как сделано в google app engine и скопировать оттуда?

thevery ★★★★
()

Питон в данном вопросе - не катит. Подобные вещи делаются на а) тикле (google safe tcl, там оно из коробки), б) лиспе (с гребенями, пошерсти ru-lisp@жж), в) хаскеле (с меньшими, но гребенями - кури исходники лямбдабота, например).

Miguel ★★★★★
()
Ответ на: комментарий от KRoN73

>Я отказался от использования Java на клиенте.

А это самое то - посылаешь .class файл и грузишь его там класслодером, применяя секбрити-рестрикшены. Самое паханое поле же.

Absurd ★★★
()
Ответ на: комментарий от Absurd

>Самое паханое поле же.

Мне нужно отработанное, простое и мультиплатформенное 3D на клиенте. Под Java ничего не нашёл. Все проекты, типа Ogre4j, jyrr и т.п. мертвы чуть более, чем полностью :-/

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от Absurd

ЗЫ Правда, у меня selinux не пущает такие апплеты.

Absurd ★★★
()

>готовые удобные и быстрые реализации изолированного исполнения сторонних пользовательских скриптов (на любом языке) в Питоне?

Написать для Python модуль-песочницу для Lua?

aiker ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.