Форум сайта python.su
А что если пропускать код через специальный фильтр, который был ругался на все недопустимое, есть какие-нибудь парсеры питоньего кода? Передо мной подобная задача стоит, хочу использовать питон в качестве внутреннего скриптового языка вместо того, чтобы разрабатывать свой.
Офлайн
А как определить, getattr/setattr применяются корректно, или пытаются модифицировать какой-то системный объект и прорваться за песочницу?
По моему - без собирания Питона руками с зарезанием нежелательных вещей на интерпретаторе - не обойтись.
Офлайн
Может быть, в таком случае, открыть новый проект? Аля: безопасный парсер пайтона для песочниц. Внутренние скриптовые языки много где нужны, а пайтон - хороший язык :)
Офлайн
Питон отличный язык - не могу не согласиться.
Еще раз повторюсь: парсер не поможет. Невозможно сделать “безопасный” парсер - в Питоне по определению есть дыры.
Берусь пробить любой парсер, который вы напишете. Причем - не затратив много труда.
Кстати, в .NET создали application domains специально для этой цели (защитить, а не пробить, конечно же :)
Причем Микрософт анонсировала фичу именно как безопасную. Вложила много времени и денег в реализацию. Так, например, взаимодействие между доменами осуществляется исключительно через маршалинг - и т.д. Я читал несколько блогов, в которых подробно рассказывалось, как эту защиту обойти.
Надо идти по пути, описанном Гвидо - создавать свой “обрезанный” интерпретатор, запускать его в отдельном процессе и взаимодействовать через IPC. Тогда можно добиться приемлемого уровня защиты для отдельно взятого случая (кстати, подобная ситуация и с защитой питоновского кода от reverse ingeneering).
В Питоновской рассылке python-dev тема “параллельно работающих питонов в одном процессе” поднимается регулярно - в последний раз неделю назад. Не с целью сделать restricted execution - но чтобы просто иметь несколько взаимодействующих между собой программ и таким образом получить экономию на IPC по производительности. И каждый раз быстро затихает - слишком уж велик объем shared state.
Как-то так.
Офлайн
Вдогонку: CouchDB должна запускать map/reduce функции для построения/пересчета индексов. Они доверяют программисту, эти map/reduce написавшему - но вместе с тем не хотят иметь поломанную базу в случае какой-нибудь ошибки.
Поэтому опять же создают подпроцессы - питон, эрланг, ява-скрипт или что-то еще.
Отредактировано (Окт. 8, 2009 03:41:54)
Офлайн
А может есть какой-нибудь готовый движок скриптового языка, который можно использовать в приложениях на питоне?
Офлайн
Кажется в PyQt4 есть встроенный скриптовый язык.
Офлайн
Кажется, камраду pasaranax срочно требуется серебряная пуля. Open Source, естественно. При этом желательно - с сертификатом повышенной безопасности :)
Офлайн
rexec и Bastion не то?
Офлайн
Они оба - deprecated.
И не запускаются на 2.2+ - RuntimeError: This code is not secure in Python 2.2 and later
Этого достаточно.
Офлайн