Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 7, 2009 20:37:08

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

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

А что если пропускать код через специальный фильтр, который был ругался на все недопустимое, есть какие-нибудь парсеры питоньего кода? Передо мной подобная задача стоит, хочу использовать питон в качестве внутреннего скриптового языка вместо того, чтобы разрабатывать свой.



Офлайн

#2 Окт. 7, 2009 22:22:40

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

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

А как определить, getattr/setattr применяются корректно, или пытаются модифицировать какой-то системный объект и прорваться за песочницу?
По моему - без собирания Питона руками с зарезанием нежелательных вещей на интерпретаторе - не обойтись.



Офлайн

#3 Окт. 8, 2009 02:32:04

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

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

Может быть, в таком случае, открыть новый проект? Аля: безопасный парсер пайтона для песочниц. Внутренние скриптовые языки много где нужны, а пайтон - хороший язык :)



Офлайн

#4 Окт. 8, 2009 03:38:17

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

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

Питон отличный язык - не могу не согласиться.
Еще раз повторюсь: парсер не поможет. Невозможно сделать “безопасный” парсер - в Питоне по определению есть дыры.
Берусь пробить любой парсер, который вы напишете. Причем - не затратив много труда.
Кстати, в .NET создали application domains специально для этой цели (защитить, а не пробить, конечно же :)
Причем Микрософт анонсировала фичу именно как безопасную. Вложила много времени и денег в реализацию. Так, например, взаимодействие между доменами осуществляется исключительно через маршалинг - и т.д. Я читал несколько блогов, в которых подробно рассказывалось, как эту защиту обойти.

Надо идти по пути, описанном Гвидо - создавать свой “обрезанный” интерпретатор, запускать его в отдельном процессе и взаимодействовать через IPC. Тогда можно добиться приемлемого уровня защиты для отдельно взятого случая (кстати, подобная ситуация и с защитой питоновского кода от reverse ingeneering).

В Питоновской рассылке python-dev тема “параллельно работающих питонов в одном процессе” поднимается регулярно - в последний раз неделю назад. Не с целью сделать restricted execution - но чтобы просто иметь несколько взаимодействующих между собой программ и таким образом получить экономию на IPC по производительности. И каждый раз быстро затихает - слишком уж велик объем shared state.

Как-то так.



Офлайн

#5 Окт. 8, 2009 03:41:28

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

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

Вдогонку: CouchDB должна запускать map/reduce функции для построения/пересчета индексов. Они доверяют программисту, эти map/reduce написавшему - но вместе с тем не хотят иметь поломанную базу в случае какой-нибудь ошибки.
Поэтому опять же создают подпроцессы - питон, эрланг, ява-скрипт или что-то еще.



Отредактировано (Окт. 8, 2009 03:41:54)

Офлайн

#6 Окт. 8, 2009 13:06:03

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

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

А может есть какой-нибудь готовый движок скриптового языка, который можно использовать в приложениях на питоне?



Офлайн

#7 Окт. 8, 2009 14:41:20

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

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

Кажется в PyQt4 есть встроенный скриптовый язык.



Офлайн

#8 Окт. 8, 2009 15:31:52

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

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

Кажется, камраду pasaranax срочно требуется серебряная пуля. Open Source, естественно. При этом желательно - с сертификатом повышенной безопасности :)



Офлайн

#9 Окт. 10, 2009 21:04:26

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

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

rexec и Bastion не то?



Офлайн

#10 Окт. 10, 2009 21:37:51

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

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

Они оба - deprecated.
И не запускаются на 2.2+ - RuntimeError: This code is not secure in Python 2.2 and later
Этого достаточно.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version