ASP.NET 程式許可權問題

來源:互聯網
上載者:User

談到ASP.NET程式的許可權,一般可分為兩種:

1) 賬戶的許可權。
2) 代碼的許可權。

賬戶的許可權可以限制運行在這個賬戶下的所有ASP.NET程式能進行什麼樣的操作,而代碼的許可權是ASP.NET程式裡專屬的,它規定了ASP.NET程式能夠訪問什麼樣的資源,比如資料庫,檔案等等。他們對ASP.NET程式是共同影響的,簡單地說,ASP.NET程式表現出來的是他們共同作用的交集。

在IIS 5中,Application Pool的預設配置賬戶是ASPNET。在IIS 6/7中有點不同,ASPNET賬戶被替成Network Service。以IIS 7為例,如果你使用的是預設的Network Service,那麼你的ASP.NET程式能訪問的資源都是受Network Service限制的,換句話說,這個賬戶能訪問什麼資源,你的ASP.NET程式才能訪問資源。Network Service在預設情況下,是可以讀寫IIS wwwroot檔案夾下的所有檔案以及在ACL的控制下來訪問其他檔案夾。

Scenario 1: 在Visual Studio下開發的時候,我們運行Visual Studio的賬戶是系統賬戶(登入機器的賬戶),這個賬戶的許可權比Network Service要大,因而出現一旦把程式部署到IIS中就有錯誤的情形時,大多可以先從這方面考慮。

Scenario 2: 在以windows整合驗證方式串連資料庫時,有時也會碰到Network Service賬戶不能Login的情形,這也是由於在開發時是用系統賬戶登入資料庫的,而在部署到IIS後,是用Network Service來串連資料庫。因而需要將Network Service賬戶添加到資料庫中。

 

代碼的許可權在ASP.NET中叫做Code Access Security(CAS). 它規定了這個ASP.NET程式能夠訪問哪些資源。很明顯,在一些情況下,賬戶許可權並不能很方便的限制ASP.NET程式能做什麼。利用CAS,我們可以限制ASP.NET程式是否能進行檔案操作,是否能訪問資料庫資源。在ASP.NET的設定檔中,它分有5個不同的等級,通過設定不同的等級可以限制程式的訪問資源。如果需要詳情的話,建議大家可以查看這篇文章:
http://msdn.microsoft.com/en-us/library/ms998326.aspx

Scenario 3: ASP.NET程式部署到付費空間上後便不能建立檔案了。這是因為伺服器在machie層級定義了CAS,限制所有運行在這台機器上的ASP.NET不能進行檔案操作。這樣做的目的主要是為了保護伺服器的安全。

 

同時,根據程式需要,我們也可以使用impersonate(通常在windows驗證時會用到)。它可以模仿一個特定使用者,這樣的話,這個thread就運行在這個特定賬戶上。在域資源的訪問中,這是一個很不錯的手段來對不同的使用者進行限制。

Have a nice day!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.