我正在开发一个大型 ASP.NET 软件产品。我们希望允许用户为某些字段输入表达式而不是常量。通常是这样的:
(Price * 1.175) + 25
显而易见的解决方案似乎是嵌入 IronPython,创建一个 Scope,传入“Price”(和其他)变量,然后将上述代码作为 IronPython 代码执行。
但是,没有什么可以阻止用户进入:
1 / 0
或者
def func1():
func1()
func1()
或者
import System.IO
File.Delete(....)
但是,如果我捕获所有异常并在具有 Internet 权限集的应用程序域中运行 IronPython 代码,我安全吗?