程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> securityPolicy與安全策略等級配置,securitypolicy策略

securityPolicy與安全策略等級配置,securitypolicy策略

編輯:關於.NET

securityPolicy與安全策略等級配置,securitypolicy策略


securityPolicy配置節是定義一個安全策略文件與其信任級別名稱之間的映射的集合。配置如下所示

其中name是指定映射到策略文件的命名的安全級別,一般的值有Full,Hight,Medium,Low,Minimal,UserDefined;policyFile指的是當前安全級別中對應的配置文件,該文件會存放在Windows\Microsoft.NET\Framework64\{.Net Framework Version}\Config或Windows\Microsoft.NET\Framework\{.Net Framework Version}\Config中。其默認配置如下

打開其中一個配置文件

SecurityClasses中添加了一些下面各種配置用到的安全類,包括以CodeAccessPermission為基類的代碼訪問權限,其包含在各個權限集PerssionSet裡面;以Condition為後綴的類,用於判定被測試的程序集是否屬於代碼組,以CodeGroup為基類的代碼組類,實際上這些類我也沒了解太多。PermissionSet節點是權限配置的集合,其Name屬性為ASP.NET的指的是。裡面的子節點IPermission則是對CodeAccessPermission的子類的配置。IPermission的class屬性的值需要和SecurityClass節點的name屬性對應。針對不同的Permission權限類可以指定不同的配置。

在MSDN官網上面的文章中介紹了幾個權限類,這裡也順帶翻譯一下

OleDbPermission

通過OleDbPermission權限類能使你的網頁應用程序支持多種數據庫類型,添加無限制的OleDbPermission 權限到你的策略文件中意味著你的應用程序可以在服務器上使用OLE DB Provider,例如達到對catelog.mdb數據庫的訪問方式進行限制。

在上面add節點中,ConnectionString屬性是指定一條可用的連接字符串,KeyRestrictions屬性用於指定在連接字符串中可用或者不可用的參數。其可用還是不可用的設置在KeyRestrictionBehavior屬性中設置,它有兩個值AllowOnly和PreventUsage。

如果毋需任何限制則改成下面的配置,關鍵是Unrestricted屬性的設置。

EventLogPermission

通過EvntLogPermission權限類可以控制當前應用程序能否許可進入Windows的事件日志。其IPermission設置如下所示

access屬性設置了administer才能使被信任的應用程序寫入事件日志。

建立事件源:假設你的應用程序需要使用應用程序指定事件源,則必須在安裝的時候啟用管理員特權。最好是使用那些支持Windows Installer或者支持 InstallUtil.exe系統組件的.NET的安裝類型。假如你在安裝或者部署的時候不能建立事件源,計算機管理員進入下面的注冊表中建立一個新的事件源。

但你不能通過提升ASP.NET進程賬戶的權限來通過寫入權限,否則攻擊者可以更改一些日志相關的設置。

FileIOPermission

如果你需要允許你的應用程序進入應用程序虛目錄以外的地方,則需要使用這個FileIOPermission權限類。例如下面定義一個應用程序可以讀取"C:\SomeDir"目錄下的文件。

在讓應用程序訪問應用程序虛目錄以外的文件時,你需要降低代碼訪問的安全性來保障應用程序隔離能力。假如在一個服務器中有多個應用程序,你需要給不同的應用程序配備不同的標識來保護一些比如是ACLs文件的資源。

以上內容均是配置策略而已,當我在MSDN上看FileIOPermission類介紹的時候發現以下的一段代碼,

這段代碼就是使用代碼訪問權限的例子了,加入不具備FileIOPermission的進程讀取C盤下的test_r就會拋出異常,在博客園另外一位園友的博客中也看到相關的示例代碼。

用這些權限類的作用就是使得它後面的代碼執行是經過具備權限的,不具備權限則不能執行下去。這些權限判定的代碼可以在用戶自己編寫,也有可能出現在.NET Framework的類庫裡面。這裡的權限就比Windows標識中具備的權限粒度更細,可以讓同一windows標識下不同的應用程序具備有差別的權限。

那下面則介紹如何給ASP.NET應用程序分配信任等級,通過在web.config中的turst配置節進行設置。

一般常用的屬性有level,這也是必填的,用於指定當前的信任等級,這個信任等級就對應securityPolicy配置節中的配置。orginUrl屬性作用是指定 URL 以用於在中等信任中配置的限制 WebPermission 權限。如果存在,則此屬性可用於只允許連接到 WebPermission 所指定的特定 URL 的某些類(如 HttpWebRequest)。看起了挺拗口且不好理解。在我理解是這個屬性當信任級別設置成中等的時候才生效,如果給這個屬性設置了一個url,這個URL會添加到WebPermission的類的可連接列表ConnectList中。凡是該列表中的URL在發出網絡請求時都可以通過。

當然這個turst節點可以出現在不同路徑下而達到對不同路徑下的代碼具備不一樣的訪問權限。如下所示

   

參考文章

ASP.NET 信任級別和策略文件

來自 <https://msdn.microsoft.com/zh-cn/library/wyts434y(v=vs.110).aspx>

   

FRAMEWORK安全性之代碼訪問安全和角色安全

來自 <http://www.cnblogs.com/luminji/archive/2010/10/29/1864248.html>

   

   

How To: Use Code Access Security in ASP.NET 2.0  

來自 <https://msdn.microsoft.com/en-us/library/ms998326.aspx>

   

trust 元素(ASP.NET 設置架構)

來自 <https://msdn.microsoft.com/zh-cn/library/tkscy493(v=vs.110).aspx>

   

管理安全策略

來自 <https://msdn.microsoft.com/zh-cn/library/wztcyd2e(v=vs.100).aspx>

   

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