很抱歉这个问题太简短了,但是我不认为它需要太多的阐述。
使用CSharpCodeProvider有任何安全隐患吗?它会不会使服务器受到攻击?
发布于 2010-06-14 03:17:32
这取决于你如何使用它。以下是从安全使用到您肯定不想允许的使用的摘要(当在您想要控制的服务器或某些环境上运行代码时):
CSharpCodeProvider只是为了生成C#源代码,那么你只需要一个权限来将生成的文件保存到某个目录或者根本不需要(如果可以将生成的代码保存到内存流中)csc.exe的权限(这在一些有限的环境中可能是不可用的,比如共享主机)。CodeSnippetExpression之类的东西,那么用户可以(以某种方式)在您的服务器上编写和运行他或她想要的任何东西,因此这将是潜在的非常危险的。发布于 2010-06-14 03:06:42
说大也大吧。从表面上看,这并不是一个直接的风险,因为你不是在运行代码,只是在编译它。然而,并不是说C#编译器不包含某种bug,如果输入了正确的恶意输入,就会导致它退出并开始直接执行命令。
但是,如果您稍后执行编译后的代码(假设您确实这样做了--否则为什么要一开始编译它呢?),它将运行与您相同的上下文。显然,这会带来各种令人不快的安全隐患,就像使用其他语言的类似eval()特性一样。
发布于 2010-06-14 03:08:37
这取决于您正在编译的源代码。如果你对源代码有足够的控制,那么这可能是一个可以接受的风险。如果您允许您的信任范围之外的人向编译器提供代码,这可能是一个不可接受的风险。
https://stackoverflow.com/questions/3033497
复制相似问题