c# - CSharpCodeProvider - 它可以被滥用吗?

标签 c# security asp.net-mvc-2

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

使用 CSharpCodeProvider 是否会导致任何安全隐患,它是否会打开服务器进行攻击?

最佳答案

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

  • 如果您使用 CSharpCodeProvider 只是为了生成 C# 源代码,那么您只需要一个权限来将生成的文件保存到某个目录或根本不注意(如果有可能获得代码生成到内存流中)

  • 如果您使用它来编译生成的 C# 源代码,那么您需要获得运行 csc.exe 的权限(在某些受限环境(例如共享主机)中可能不可用)。

  • 如果您只是生成文件并编译它们,那么它可能不会有害(尽管有人可能会滥用您的应用程序生成很多很多文件并使用某种 DOS 攻击来攻击服务器。

  • 如果您还加载并执行生成的代码,那么这取决于您如何生成它。如果您假设 C#/CodeDOM 中没有错误并且可以保证生成的代码是安全的,那么您应该没问题。

  • 如果您的代码包含诸如 CodeSnippetExpression 之类的内容可以由用户提供(以某种方式),而不是用户可以在您的服务器上编写和运行他或她想要的任何东西,因此这可能非常危险。

关于c# - CSharpCodeProvider - 它可以被滥用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3033497/

相关文章:

javascript - 如何保护/隐藏 Javascript 方法或 JS 文件不让用户查看

c# - Asp.Net MVC 2 - 将模型的属性绑定(bind)到不同的命名值

c# - 循环遍历子目录中的每个子目录

security - IPython 笔记本安全

c# - 如何通过在 C# 中生成 IL 将 Action<T> 转换为编译表达式或 DynamicMethod?

asp.net - 是否有理由编写自己的身份验证而不是使用 Forms Security

asp.net-mvc - 没有值(value)的asp.net mvc htmlattribute

c# - ASP.NET MVC2 : How to redirect to GET Details/5 after POST Add

c# - 如何在 C# Asp.net 中将 SELECT sql 查询结果保存在数组中

C# NET HTTP.SYS 网络服务器