C# 动态编译 安全吗
不是动态编译整个文件,是编译一段代码,类似于下面这种
public static string GenerateCode(string m_code)
{
StringBuilder sb = new StringBuilder();
sb.Append("using System;");
sb.Append(Environment.NewLine);
sb.Append("namespace DynamicCodeGenerate");
sb.Append(Environment.NewLine);
sb.Append("{");
sb.Append(" public class HelloWorld");
sb.Append(" {");
sb.Append(" public double OutPut()");
sb.Append(" {");
sb.Append(m_code); //此处输入一段代码m_code
sb.Append(" }");
sb.Append(" }");
sb.Append("}");
string code = sb.ToString();
return code;
}
主要过程就是,在程序窗口中输入一段代码,然后把代码存入 m_code ,然后动态编译,再在其他地方使用反射调用这段编译了的程序中的函数 OutPut() 。
我想问的是,在这种情况下,用户有没有可能输入一段恶意代码,从而对系统或者程序造成危害?
如果有的话,能不能举了例子,或者说说有没有预防的方法?
[解决办法]
这绝对的不安全啊,简单的弄个死循环就搞死你了。不过这需求很有意思啊,是要解决什么问题啊必须走这条路
[解决办法]
参考用栈实现四则运算器 这种没必要用这么复杂的过程