自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

代碼演示ADO.NET CAS權(quán)限訪問

開發(fā) 后端
這里就ADO.NET CAS權(quán)限的使用做出詳細(xì)的介紹,CAS權(quán)限在ADO.NET中是很重要的,希望大家通過看本文會更了解CAS權(quán)限。

隨著ADO.NET的發(fā)展,我們運(yùn)用起來也非常緊張,這里就使用ADO.NET CAS權(quán)限驗(yàn)證代碼。這里我們就詳細(xì)的分析一下吧。對于部分信任方案,可以通過指定SqlClientPermissionAttribute來要求代碼中的特定方法具有CAS特權(quán)。如果當(dāng)前受限制的安全策略不允許該權(quán)限,在運(yùn)行代碼之前將引發(fā)異常。有關(guān)安全策略的更多信息,請參見安全策略管理和安全策略最佳實(shí)施策略。

#T#在設(shè)計(jì)ADO.NET CAS權(quán)限時,正確的模式是以限制性最強(qiáng)的情況開始(無任何權(quán)限),然后添加代碼執(zhí)行特定任務(wù)所需的特定權(quán)限。相反的模式是一開始就授予所有權(quán)限,然后拒絕特定權(quán)限,這樣做是不安全的,因?yàn)楸磉_(dá)同一連接字符串可以有許多方式。例如,如果一開始就授予所有權(quán)限,然后嘗試拒絕使用連接字符串“server=someserver”,則仍將允許使用“server=someserver.mycompany.com”。通過在開始時始終不授予任何權(quán)限,可以降低權(quán)限集中存在漏洞的幾率。

下面的代碼演示SqlClient如何執(zhí)行安全請求,如果沒有相應(yīng)的ADO.NET CAS權(quán)限,將引發(fā)SecurityException??刂婆_窗口中顯示SecurityException輸出。

  1. PrivateSubTestCAS(ByValconnectString1AsString,ByValconnectString2AsString)  
  2. 'SimulateremovingSqlClientpermissions.  
  3. DimpermissionAsNewSqlClientPermission(PermissionState.Unrestricted)  
  4. permission.Deny()  
  5.  
  6. 'Trytoopenaconnection.  
  7. Try  
  8. UsingconnectionAsNewSqlConnection(connectString1)  
  9. connection.Open()  
  10. Console.WriteLine("Connectionopened,unexpected.")  
  11. EndUsing  
  12.  
  13. CatchexAsSystem.Security.SecurityException  
  14. Console.WriteLine("Failed,asexpected:{0}",_  
  15. ex.FirstPermissionThatFailed)  
  16.  
  17. 'UncommentthefollowinglinetoseeExceptiondetails.  
  18. 'Console.WriteLine("BaseException:{0}",ex.GetBaseException())  
  19. EndTry  
  20.  
  21. SqlClientPermission.RevertAll()  
  22.  
  23. 'Addpermissionforaspecificconnectionstring.  
  24. 'Thiswouldtypicallybeachievedbytheadministrator  
  25. 'deployingaCASpolicy,notinyourcode.  
  26. permission=NewSqlClientPermission(PermissionState.None)  
  27. permission.Add(connectString1,"",KeyRestrictionBehavior.AllowOnly)  
  28.  
  29. permission.PermitOnly()  
  30.  
  31. 'Tryagain,itshouldsucceednow.  
  32. Try  
  33. UsingconnectionAsNewSqlConnection(connectString1)  
  34. connection.Open()  
  35. Console.WriteLine("Connectionopened,asexpected.")  
  36. EndUsing  
  37.  
  38. CatchexAsSystem.Security.SecurityException  
  39. Console.WriteLine("Unexpectedfailure:{0}",ex.Message)  
  40. EndTry  
  41.  
  42. 'Tryadifferentconnectionstring.Thisshouldfail.  
  43. Try  
  44. UsingconnectionAsNewSqlConnection(connectString2)  
  45. connection.Open()  
  46. Console.WriteLine("Connectionopened,unexpected.")  
  47. EndUsing  
  48.  
  49. CatchexAsSystem.Security.SecurityException  
  50. Console.WriteLine("Failed,asexpected:{0}",ex.Message)  
  51. EndTry  
  52. EndSub  

在控制臺窗口中應(yīng)看到以下輸出:

  1. Failed,asexpected:<IPermissionclassIPermissionclass="System.Data.SqlClient.  
  2. SqlClientPermission,System.Data,Version=2.0.0.0,  
  3. Culture=neutral,PublicKeyToken=b77a5c561934e089"version="1"  
  4. AllowBlankPassword="False"> 
  5. <addConnectionStringaddConnectionString="DataSource=(local);InitialCatalog=  
  6. Northwind;IntegratedSecurity=SSPI"KeyRestrictions=""  
  7. KeyRestrictionBehavior="AllowOnly"/> 
  8. </IPermission> 
  9.  
  10. Connectionopened,asexpected.  
  11. Failed,asexpected:Requestfailed.  
責(zé)任編輯:田樹 來源: 博客
相關(guān)推薦

2009-11-04 09:02:34

ADO.NET _C

2009-11-12 09:51:59

ADO.NET結(jié)構(gòu)

2009-11-04 11:30:35

ADO.NET Dat

2009-11-13 09:39:48

2009-12-21 16:53:06

ADO.NET使用說明

2009-11-13 09:53:47

ADO.NET權(quán)限集

2009-11-11 13:59:15

ADO.NET與ADO

2009-11-11 11:19:57

ADO.NET使用

2009-10-29 10:00:53

ADO.NET數(shù)據(jù)集

2009-12-23 17:54:01

ADO.NET 2.0

2009-11-04 17:22:30

ADO.NET數(shù)據(jù)訪問

2009-12-28 14:54:48

ADO.NET語句

2009-11-13 14:22:11

ADO.NET Dat

2009-08-20 16:07:39

C#和ADO.NET訪

2009-12-31 09:54:04

ADO.NET數(shù)據(jù)訪問

2009-11-12 15:00:03

ADO.NET實(shí)體數(shù)據(jù)

2009-11-11 11:00:38

ADO.NET結(jié)果集

2009-11-13 09:24:17

2009-12-30 15:21:55

ADO.NET訪問

2009-12-22 16:23:26

ADO.NET訪問
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號