程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET安全問題--ASP.NET中的授權問題(前篇)

ASP.NET安全問題--ASP.NET中的授權問題(前篇)

編輯:關於ASP.NET

前言:之前的一些文章談了一些有關驗證的問題,接下來的一些文章就說下授權以及代碼訪問安全的問題。

在ASP.NET應用程序中,授權就意味著允許訪問資源,資源的形式有很多了:文件,數據庫,圖片等。授權的處理過程基本上是:創建用戶或者用戶組,然後為他們分配權限。在.NET Framework中,有很多的方式可以實現授權,如文件授權,URL授權以及自定義的授權。

下面我們就來談下ASP.NET是如何控制訪問受限資源的,本篇主要講述下列問題:

1.基於角色的安全

2. 權限的映射:

3.權限對象Permission簡介

本篇的代碼不是很多,到了下篇實戰篇中盡量給出更多的代碼。

1.基於角色的安全

相信大家多什麼是角色的,以及基於角色的安全都有一些了解,他們的概念就不贅述了。在講述基於角色的安全之前,希望大家對之前講過的Identity和IPrincipal要了解(如果不是很清楚的,可以參看我之前的安全的系列文章)。

在.NET中,可以用.NET Framework靈活的將用戶標識(Identity)和角色相結合,並且為結合後的主體定義權限。我們之前說過:

主體(IPrincipal)=(用戶標識:包含用戶名等信息的對象)Identity+角色;

我們可以定義很多的角色,然後為角色定義訪問資源的權限。我們一般是定義角色,如定義一個Customer角色,然後使用戶的角色為Customer,然後我們定義Customer的訪問權限,那麼這些訪問的權限就應用到了那些角色為Customer的用戶上,也就是說,我們並不是為每個用戶分別定義權限,因為那樣維護和修改起來麻煩。

當然,我們也可以對特定的用戶單獨的進行授權,如寫入文件。授權的方式很多,但是他們的思想是大體相同的:

通常,一個應用程序的授權步驟如下:

1.判斷用戶是否有合法的訪問資源的憑證(也就是我們之前談論的驗證的過程)

2.拒絕特定的用戶訪問特定的資源

3.允許特定的用戶訪問特定的資源

2. 權限的映射:

在.NET 中,有一些內置的Permission對象,它們可以使得用戶有合適的權限來訪問資源。在講後面的問題之前,首先說說什麼是Permission。我們知道,我們的系統中一般有很多的文件和文件夾,而且這些文件或者文件夾常常都是有訪問的權限的,比如,我們可以把一些文件的權限定義為:只能管理員修改,一般的用戶只讀,這點大家都不陌生了。

注意:我們是通過系統來配置這些文件或者文件夾的權限的。(大家應該都會)

我們的網站,實質其實就是放在服務器上的一些文件,既然這些文件在服務器,如Win Server 2003上,那麼這些文件肯定是有訪問的權限的。如果你是這台服務器的管理員,那麼你就可以對這些文件進行任意的操作,其他的用戶就沒有這個能力了。

現在我們假設,我們的網站是放在服務器上,而且網站的文件,如aspx頁面,圖片,App_Code等都在網站的文件夾中,而且這些文件資源的權限早就定義好了,如只讀。

其實我們在.NET中的一些Permission類,其實就是權限的映射。怎麼說?

假如我們的網站文件夾中的一個文件,如Admin.aspx頁面,我們可以通過操作系統來定義這個文件的訪問權限(操作為:選中文件,點擊右鍵,選擇"共享和安全",然後選擇哪些用戶可以訪問,而且這些用戶的操作是什麼,如讀,寫,安全控制等)。這些都是系統定義的一些權限,.NET Framework就把定義在文件上的一些權限"取出",包裝映射在一些Permission類中,這樣我們就能用托管代碼,如C#來操作這些權限,而不用Win API(非托管代碼)來操作。(理解如有問題,歡迎大家指正!)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved