Я работаю над большим программным продуктом ASP.NET. Мы хотели бы позволить пользователям вводить выражения, а не константы для определенных полей. Обычно что-то вроде:
(Price * 1.175) + 25
Очевидным решением, по-видимому, является встраивание IronPython, создание Scope, передача переменных «Price» (и других), а затем выполнение вышеуказанного в виде кода IronPython.
Однако ничто не помешает пользователям войти:
1 / 0
или
def func1():
func1()
func1()
или
import System.IO
File.Delete(....)
Но если я перехватываю все исключения и запускаю код IronPython в домене приложения с установленным разрешением Интернета, я в безопасности?