首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSharpCodeProvider -它会被滥用吗?

CSharpCodeProvider -它会被滥用吗?
EN

Stack Overflow用户
提问于 2010-06-14 02:59:18
回答 3查看 734关注 0票数 7

很抱歉这个问题太简短了,但是我不认为它需要太多的阐述。

使用CSharpCodeProvider有任何安全隐患吗?它会不会使服务器受到攻击?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-14 03:17:32

这取决于你如何使用它。以下是从安全使用到您肯定不想允许的使用的摘要(当在您想要控制的服务器或某些环境上运行代码时):

  • 如果你使用CSharpCodeProvider只是为了生成C#源代码,那么你只需要一个权限来将生成的文件保存到某个目录或者根本不需要(如果可以将生成的代码保存到内存流中)
  • 如果你使用它来编译生成的C#源代码,那么你需要一个运行csc.exe的权限(这在一些有限的环境中可能是不可用的,比如共享主机)。
  • 如果你只是生成文件并编译它们,那么它可能是无害的(尽管有人可能会滥用你的应用程序生成许多文件,
  • 如果你也加载并执行生成的代码,那么它取决于你是如何生成它的。如果您假设C#/CodeDOM中没有错误,并且可以保证生成的代码是安全的,那么您应该是安全的。
  • 如果您的代码包含诸如CodeSnippetExpression之类的东西,那么用户可以(以某种方式)在您的服务器上编写和运行他或她想要的任何东西,因此这将是潜在的非常危险的。
票数 5
EN

Stack Overflow用户

发布于 2010-06-14 03:06:42

说大也大吧。从表面上看,这并不是一个直接的风险,因为你不是在运行代码,只是在编译它。然而,并不是说C#编译器不包含某种bug,如果输入了正确的恶意输入,就会导致它退出并开始直接执行命令。

但是,如果您稍后执行编译后的代码(假设您确实这样做了--否则为什么要一开始编译它呢?),它将运行与您相同的上下文。显然,这会带来各种令人不快的安全隐患,就像使用其他语言的类似eval()特性一样。

票数 2
EN

Stack Overflow用户

发布于 2010-06-14 03:08:37

这取决于您正在编译的源代码。如果你对源代码有足够的控制,那么这可能是一个可以接受的风险。如果您允许您的信任范围之外的人向编译器提供代码,这可能是一个不可接受的风险。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3033497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档