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的功能幾乎沒有限制,因爲這是實施反射的地方。