我正在开发一个大型 ASP.NET 软件产品。我们希望允许用户为某些字段输入表达式而不是常量。通常类似于:
(Price * 1.175) + 25
显而易见的解决方案似乎是嵌入 IronPython,创建一个范围,传入“价格”(和其他)变量,然后将上述内容作为 IronPython 代码执行。
但是,没有什么可以阻止用户进入:
1 / 0
或
def func1():
func1()
func1()
或
import System.IO
File.Delete(....)
但是,如果我捕获所有异常并在具有 Internet 权限集的应用程序域中运行 IronPython 代码,我安全吗?
最佳答案
您通过指出没有什么可以阻止用户输入有效代码来回答您自己的问题。永远不要相信用户输入。曾经。
关于asp.net - 作为 IronPython 执行用户输入的表达式是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1902453/