Пример кода:
Код: Выделить всё
def public(v):
print('Allowed to trigger this with '+v)
def secret():
print('Not allowed to trigger this')
unsafe_user_code = '''
def user_function(a):
if 'o' in a:
public('parameter')
a = 'hello'
user_function(a)
'''
run_code(unsafe_user_code, allowed=['public'])
Этого можно легко добиться с помощью exec().
Этого можно легко добиться с помощью exec(), но, насколько я понимаю, в Python нет способа безопасного использования exec().
p>
Вот мои требования:
- Синтаксис скрипта в идеале должен быть похож на Python (но также может быть чем-то вроде JavaScript)
- В скрипте должны быть доступны стандартные механизмы, такие как строковые операции, if/else/ while и определение собственных переменных и функций.
- скрипт должен иметь возможность выполнять только определенные функции (в примере будет разрешено только public())
- Я хотел бы полагаться только на реализации/библиотеки на основе Python поскольку я не хочу иметь зависимости от внешнего программного обеспечения Python
- Это не должно представлять угрозу безопасности
Есть ли лучший способ добиться чего-то подобного?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/666 ... -in-python