很抱歉这个问题很短,但我认为它不需要太多阐述。
使用 CSharpCodeProvider
是否会导致任何安全隐患,它是否会打开服务器进行攻击?
最佳答案
这取决于你如何使用它。以下是从安全使用到您肯定不想允许的使用(在服务器或您想要控制的某些环境上运行代码时)排序的摘要:
如果您使用
CSharpCodeProvider
只是为了生成 C# 源代码,那么您只需要一个权限来将生成的文件保存到某个目录或根本不注意(如果有可能获得代码生成到内存流中)如果您使用它来编译生成的 C# 源代码,那么您需要获得运行
csc.exe
的权限(在某些受限环境(例如共享主机)中可能不可用)。如果您只是生成文件并编译它们,那么它可能不会有害(尽管有人可能会滥用您的应用程序生成很多很多文件并使用某种 DOS 攻击来攻击服务器。
如果您还加载并执行生成的代码,那么这取决于您如何生成它。如果您假设 C#/CodeDOM 中没有错误并且可以保证生成的代码是安全的,那么您应该没问题。
如果您的代码包含诸如
CodeSnippetExpression
之类的内容可以由用户提供(以某种方式),而不是用户可以在您的服务器上编写和运行他或她想要的任何东西,因此这可能非常危险。
关于c# - CSharpCodeProvider - 它可以被滥用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3033497/