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