成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET Framework安全防護技巧說明

開發 后端
.NET Framework安全在實際應用中是非常值得我們去注意的。在這篇文章中將會通過一個示例來為大家詳細解讀其安全性能的防護。

作為一個開發人員來說,.NET Framework是一款功能非常強大的應用程序。不過功能雖然強大,其安全性也還是需要我們去注重的。好容易在繁重的開發任務之余抽出點時間學習一些東西。發現機子里有幾個關于 System.Security 內容的示例,這一個命名空間以前還真是從來沒用過,正好拿來學習一下。由于不是系統的學習,不好組織,想了想,就以.NET Framework安全防護的示例來說明吧。 #t#

.NET Framework安全一、設定權限

  1. [FileIOPermission(SecurityAction.
    Demand, 
    Write"C:\\temp.txt")]  
  2. public class App : 
    System.Windows.Forms.Form  
  3. {  
  4. //略  

FileIOPermissionAttribute 定義于 System.Security.Permissions 里。它繼承于 SecurityAttribute,在這個例子中,要求使用 App 類時必須具有對 C:\temp.txt 文件的寫權限。

.net framework 的文檔中關于安全要求有這樣一段話:“若要確保只有被授予了指定權限的調用方才能夠調用您的代碼,可以聲明方式或強制方式要求您的代碼的調用方擁有特定的權限或權限集。要求使運行庫執行安全檢查,從而對調用代碼實施限制。在安全檢查過程中,運行庫遍歷調用堆棧,檢查堆棧中每個調用方的權限,然后確定是否已將要求的權限授予每個調用方。如果發現某個調用方沒有要求的權限,則安全檢查失敗,并引發 SecurityException。”

例子中,權限是以聲明的方式出現的。SecurityAction.Demand 可以作用于類或方法,在這里是作用于類上。Write 是 FileIOPermission 的屬性之一,其它常用屬性還有 Read、Append、All 等等。

SecurityAction 枚舉中還有一些值是作用于 assembly 上的。比如以下的例子:

  1. [assembly:SecurityPermission
    (SecurityAction.RequestMinimum ,
    UnmanagedCode=true)] 

SecurityAction.RequestMinimum 是請求運行的最小權限。這一行要求程序集允許調用非托管代碼。

除了聲明方式外,還可以使用強制方式。如下的代碼:

  1. FileIOPermission filePerm = 
    new FileIOPermission(FileIO
    PermissionAccess.AllAccess, 
    "C:\\temp.txt");  
  2. try  
  3. {  
  4. filePerm.Demand();   
  5. // Code to access file goes here  
  6. }  
  7. catch (SecurityException excep)  
  8. {  
  9. MessageBox.Show (excep.Message);  
  10. return;  
  11. }  

.NET Framework安全二、用戶角色管理

用戶及其角色的管理是在許多程序中都要使用到的。如今 asp.net 2.0 對于這方面有了大大增強,開發人員不需要很了解技術就可以做出很不錯的應用。不過對于 Windows Form 應用程序來說,不少地方還需要程序員自己設定。

假定我們已知曉了 userName 以及它所屬于的 roles,那么可以這樣來設置當前線程的 Principal:

  1. GenericIdentity genIdent = 
    new GenericIdentity(userName);  
  2. GenericPrincipal genPrin = 
    new GenericPrincipal
    (genIdent, roles);  
  3. Thread.CurrentPrincipal = 
    genPrin;  

隨后我們有三種辦法來進行用戶角色驗證。

***種方法是使用 GenericPrincipal.IsInRole 方法:

  1. GenericPrincipal currentPrin = 
    Thread.CurrentPrincipal as 
    GenericPrincipal;  
  2. if (currentPrin != null && 
    currentPrin.IsInRole("Manager"))  
  3. {  
  4. //略  
  5. }  

第二種方法則是使用 PrincipalPermission 類,類似于權限設定中的強制方式:

  1. PrincipalPermission prinPerm = 
    new PrincipalPermission
    (null, "Manager");  
  2. try  
  3. {  
  4. prinPerm.Demand();  
  5. //do something  
  6. }  
  7. catch  
  8. {  
  9. //error handling  

第三種方式則類似于權限設定中的聲明方式:

  1. private void DecPermButton_Click
    (object sender, System.EventArgs e)  
  2. {  
  3. try  
  4. {  
  5. performManagerAction();  
  6. // do something  
  7. }  
  8. catch  
  9. {  
  10. // error handling  
  11. }  
  12. }  
  13. [PrincipalPermission
    (SecurityAction.Demand, 
    Role="Manager")]  
  14. void performManagerAction()  
  15. {  

關于.NET Framework安全的另一個重要內容是加密。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-10-27 14:35:24

2010-08-26 22:11:11

2009-10-29 14:00:48

2009-12-11 15:28:02

PHP安全防護

2023-09-05 07:05:35

2019-10-21 09:02:23

郵件安全網絡釣魚電子郵件

2010-09-17 14:03:40

2013-12-18 09:24:42

2012-12-13 10:09:03

2014-12-17 10:05:58

2010-12-24 12:47:20

2011-03-23 15:44:50

2016-07-05 09:53:57

2011-06-21 09:01:02

2010-12-21 17:17:21

2023-06-25 14:50:32

2009-03-09 11:13:42

2013-04-11 15:04:47

2011-05-13 13:26:33

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品欧美乱码久久久久久 | 超碰成人av | 一级a性色生活片久久毛片 一级特黄a大片 | 国产午夜精品久久久久免费视高清 | 国产精品久久久久久久三级 | 亚洲日本欧美日韩高观看 | 欧美区日韩区 | 天天天天操 | 毛片国产 | 亚洲成人av一区二区 | 国产99视频精品免费播放照片 | 午夜噜噜噜 | 国产精品亚洲二区 | 国产伦精品 | 黄色在线免费观看 | 中文字幕一区在线观看视频 | www.色综合 | 91精品国产一区二区在线观看 | 一级高清免费毛片 | 欧美性久久 | av播播 | 亚洲九九精品 | 一级特黄a大片 | 欧美一区二区三区在线看 | 日韩成人免费视频 | 国产精品一区二区三区在线 | 在线婷婷 | 91在线免费视频 | 亚洲 中文 欧美 日韩 在线观看 | 男女网站在线观看 | aa级毛片毛片免费观看久 | 色片在线观看 | 爱草在线 | 成人午夜免费视频 | 亚洲区一区二 | 久久久久久国产一区二区三区 | 九九综合九九 | 欧美综合久久 | 日韩中文一区二区 | 久久99精品久久久久久国产越南 | 久久天堂|