3

我很好奇只要访问C#中的System.dll命名空间,某人可以做些什么。通过Web服务暴露system.dll是否可能存在安全隐患?

我在玩动态代码编译,并创建了一个简单的网站,允许我输入C#代码。这通过Web服务传递给一个类,该类遵循并在新线程中运行代码,并通过WS返回(代码必须返回一个字符串)结果并显示在网页上。

现在我有一个简单的检查来中止线程,如果它运行超过5秒,以确保像一个无限循环简单的东西不会崩溃的东西。

“假设”如果我发布了这个Web应用程序,可能会有人严重/任何损害Web服务器只访问System.dll?

**某些示例的奖励积分! :)

回答

6
  1. 您可以创建一个不符合您的5秒规则的新线程(mscorlib.dll),使用WebClient(System.dll)下载删除二进制文件并使用Process(System.dll)执行它。
  2. 只需创建数千个永久循环线程的循环将消耗大量的CPU时间。
+0

+1`WebRequest`类也在system.dll – 2011-02-06 04:56:45

+0

@ simon-svensson上!我只是想通过导入System来阻止这样的事情,但是当然你可以直接引用System.Net命名空间。 – 2011-02-06 12:46:02

0

如果适当地运行部分信任和限制权限,请不要使用此功能。如果你不这样做,那么System.dllmscorlib.dll的功能几乎没有限制,因为这是实施反射的地方。