2009-01-20 80 views
5

我最近加入了一家公司,在分析他們的環境時,我發現SharePoint web.config的信任級別設置爲「完整」。我知道這是一個非常糟糕的做法,希望stackoverflow社區能幫我概述這個決定的缺陷。ASP.NET - 信任級別=完整?

哦,看起來這個決定是爲了讓開發人員在不創建CAS策略的情況下將dll部署到Bin文件夾。嘆。

只是想澄清和使事情變得更糟,我們也在此Web應用程序中部署第三方代碼。

回答

1

瑕疵?許多。但是最令人沮喪的是直接用CAS工具:

「...它允許您完全訪問計算機的資源,如文件系統或網絡訪問,可能在安全系統的控制之外運行。」

這意味着,授予Full Trust的代碼可以在系統上執行任何其他代碼段(託管或其他),可以通過網絡調用任何機器,可以在文件系統中執行任何操作(包括更改受限制文件的權限 - 甚至OS文件)。

大多數網絡程序員都會說「這不是問題,它只是我的代碼」,這很好....直到他們的代碼中出現安全缺陷,允許攻擊者使用它來做不好的事情。之前授予的Full Trust變得相當不幸。

+7

不要將.NET的代碼安全概念Full Trust與Windows授權混淆。設置完全信任不會授予ASP.NET工作進程帳戶的任何新權限。 Windows仍將例如根據DACL等限制對文件系統的訪問權限。 – 2009-01-20 15:15:48

+0

誠然,但Full Trust具有足夠高的Windows憑據的程序集(由於CAS策略不嚴格,如果我正在審閱此應用程序,這是我首先要查找的內容....)可以簡單地開始改變DACL。 – TheSmurf 2009-01-20 15:25:14

+2

呃...沒有。你認爲例如來賓帳戶可以簡單地修改OS文件的權限並開始隨機寫入? iusr賬戶在實踐中遇到過問題嗎? – 2009-01-20 22:13:41

2

如果他們忽略了CAS的政策,那麼讓他們回撥它可能是一種艱難的銷售,因爲這會讓他們的工作變得更難一些(或者至少會減少一些寬容)。改變安全實踐總是很艱難 - 就像當我不得不說服我的老闆一樣,在我們的Web應用程序的SQL連接字符串中使用SA帳戶是一個壞主意 - 但卻在那裏。

Full Trust允許應用程序升級以控制計算機上的任何資源。雖然你的應用程序必須有安全缺陷才能允許這些安全漏洞,但他們可能會聲稱他們已經通過精確的編程阻止了任何升級,提醒他們在發生某些事情的情況下,他們是不是會網絡應用程序沒有控制整臺電腦?我的意思是,以防萬一?

編輯:我在這裏用我的語言有點過分熱情。完全信任將允許應用程序控制任何它想要的,但只有當應用程序池進程有足夠的權利來執行它。因此,如果您作爲受限用戶運行,除了應用程序需要的服務器上沒有權限,那麼我認爲「完全信任」基本上沒有風險。實際情況是,應用程序池所有者很可能擁有一些您不希望自己的應用程序擁有的權利(在某些情況下,還有更多),因此限制應用程序安全性並單獨授予其他權利需求會更安全到應用程序。謝謝你的更正,巴里。

1

我誠實地發現sharepoint限制太多。

看看下面的頁面,看看有什麼可以和不能基於信任級別做 http://msdn.microsoft.com/en-us/library/ms916855.aspx

一個問題,我跑進立刻被我不能使用緩存應用程序塊。我們使用這個應用程序塊而不是ASP.NET緩存,因爲我們使用了MVP模式,並且可能會打開一個win窗體應用程序。

另一個問題是沒有反射,這導致關於頁面失敗,因爲版本號是從程序集的元數據中提取的。

我認爲最好的解決方案是不使用Sharepoint作爲應用程序主機。如果編碼量太小以至於不會影響信任級別,那麼我只會將Sharepoint用作應用程序主機,並且在設置新應用程序時工作量會減少。如果您正在進行某種類型的編碼,並開始觸及信任級別的壁壘,請將您的應用程序移至適當的ASP.NET環境中。但那只是我,我有偏見。也許你應該嘗試瞄準中等信任級別的妥協。

4

託德,

這本書,「Programming Microsoft ASP.Net 3.5」,由迪諾Espisito規定不允許完全信任在ASP.Net應用程序的一些聲音的推理。

除了其他原因,迪諾聲稱暴露在互聯網上的網絡應用程序是「你可以想象到的計算機安全最惡劣的環境之一」。和:

一個公開曝光完全信任 應用程序是一個潛在的平臺 黑客發動攻擊。 應用程序是可信的, 更安全,應用程序發生 。

我很驚訝的是,StackOverflow社區沒有更好地概述Full Trust的問題。我希望得到同樣的東西,所以我不必爲了找到答案而去挖掘我的一堆書,懶惰的我。

1

我在開發機器上使用完全信任..所以我可以在構建新代碼時部署到BIN。 我相信我自己的代碼,並在GAC中對其進行生產,因爲創建CAS策略是一種痛苦。

第三方的事情要我擔心。但是:在網絡上找到

大多數第三方解決方案也部署到GAC(假定出於同樣的原因)。這給了他們所有的權利,不管信任級別如何。 如果你信任第三方,感覺它更像是一個事情......你真的相信自己的開發者嗎?

黑客會做什麼? 黑客在您的BIN文件夾中放入惡意DLL的情況我認爲不太現實..不管他是否可以這樣做,他也可能會改變信任級別。