随着ADO.NET的发展,我们运用起来也非常紧张,这里就使用ADO.NET CAS权限验证代码。这里我们就详细的分析一下吧。对于部分信任方案,可以通过指定SqlClientPermissionAttribute来要求代码中的特定方法具有CAS特权。如果当前受限制的安全策略不允许该权限,在运行代码之前将引发异常。有关安全策略的更多信息,请参见安全策略管理和安全策略最佳实施策略。

我们提供的服务有:成都网站制作、成都网站建设、微信公众号开发、网站优化、网站认证、徽县ssl等。为超过千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的徽县网站制作公司
#T#在设计ADO.NET CAS权限时,正确的模式是以限制性最强的情况开始(无任何权限),然后添加代码执行特定任务所需的特定权限。相反的模式是一开始就授予所有权限,然后拒绝特定权限,这样做是不安全的,因为表达同一连接字符串可以有许多方式。例如,如果一开始就授予所有权限,然后尝试拒绝使用连接字符串“server=someserver”,则仍将允许使用“server=someserver.mycompany.com”。通过在开始时始终不授予任何权限,可以降低权限集中存在漏洞的几率。
下面的代码演示SqlClient如何执行安全请求,如果没有相应的ADO.NET CAS权限,将引发SecurityException。控制台窗口中显示SecurityException输出。
- PrivateSubTestCAS(ByValconnectString1AsString,ByValconnectString2AsString)
 - 'SimulateremovingSqlClientpermissions.
 - DimpermissionAsNewSqlClientPermission(PermissionState.Unrestricted)
 - permission.Deny()
 - 'Trytoopenaconnection.
 - Try
 - UsingconnectionAsNewSqlConnection(connectString1)
 - connection.Open()
 - Console.WriteLine("Connectionopened,unexpected.")
 - EndUsing
 - CatchexAsSystem.Security.SecurityException
 - Console.WriteLine("Failed,asexpected:{0}",_
 - ex.FirstPermissionThatFailed)
 - 'UncommentthefollowinglinetoseeExceptiondetails.
 - 'Console.WriteLine("BaseException:{0}",ex.GetBaseException())
 - EndTry
 - SqlClientPermission.RevertAll()
 - 'Addpermissionforaspecificconnectionstring.
 - 'Thiswouldtypicallybeachievedbytheadministrator
 - 'deployingaCASpolicy,notinyourcode.
 - permission=NewSqlClientPermission(PermissionState.None)
 - permission.Add(connectString1,"",KeyRestrictionBehavior.AllowOnly)
 - permission.PermitOnly()
 - 'Tryagain,itshouldsucceednow.
 - Try
 - UsingconnectionAsNewSqlConnection(connectString1)
 - connection.Open()
 - Console.WriteLine("Connectionopened,asexpected.")
 - EndUsing
 - CatchexAsSystem.Security.SecurityException
 - Console.WriteLine("Unexpectedfailure:{0}",ex.Message)
 - EndTry
 - 'Tryadifferentconnectionstring.Thisshouldfail.
 - Try
 - UsingconnectionAsNewSqlConnection(connectString2)
 - connection.Open()
 - Console.WriteLine("Connectionopened,unexpected.")
 - EndUsing
 - CatchexAsSystem.Security.SecurityException
 - Console.WriteLine("Failed,asexpected:{0}",ex.Message)
 - EndTry
 - EndSub
 
在控制台窗口中应看到以下输出:
- Failed,asexpected:<IPermissionclassIPermissionclass="System.Data.SqlClient.
 - SqlClientPermission,System.Data,Version=2.0.0.0,
 - Culture=neutral,PublicKeyToken=b77a5c561934e089"version="1"
 - AllowBlankPassword="False">
 - <addConnectionStringaddConnectionString="DataSource=(local);InitialCatalog=
 - Northwind;IntegratedSecurity=SSPI"KeyRestrictions=""
 - KeyRestrictionBehavior="AllowOnly"/>
 - Connectionopened,asexpected.
 - Failed,asexpected:Requestfailed.
 
                标题名称:代码演示ADO.NETCAS权限访问
                
                分享链接:http://www.csdahua.cn/qtweb/news28/492078.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网