djd*_*d87 7 c# security asp.net-mvc-2
对于问题的简短表示道歉,但我认为这不需要太多详细说明.
使用CSharpCodeProvider它会导致任何安全隐患,是否可以打开服务器进行攻击?
这取决于你如何使用它.以下是从安全使用到您当然不希望允许的用法的摘要(在服务器上运行代码或您想要控制的某个环境时):
如果CSharpCodeProvider仅用于生成C#源代码,那么您只需要一个权限即可将生成的文件保存到某个目录或完全注意(如果可以将生成的代码生成到内存流中)
如果您使用它来编译生成的C#源,那么您需要运行权限csc.exe(在某些有限的环境中可能无法使用,例如共享主机).
如果您只是生成文件并编译它们,那么它可能不会有害(尽管有人可能会滥用您的应用程序生成许多文件并使用某种DOS攻击攻击服务器.
如果您还加载并执行生成的代码,那么它取决于您如何生成它.如果您认为C#/ CodeDOM中没有错误并且可以保证生成的代码是安全的,那么您应该没问题.
如果您的代码包含CodeSnippetExpression可由用户提供的内容(以某种方式),而不是用户可以在服务器上编写和运行他或她想要的任何内容,那么这可能非常危险.