SqlClientPermission 如何使用?
来源:互联网 发布:室内全景制作软件 编辑:程序博客网 时间:2024/05/23 10:51
SqlClientPermission 如何使用?
在看《ADO.NET核心编程》的第三章的时候遇到一个问题:就是连接字符串安全性实在是看不太懂。后来找了几天资料,总算是基本弄了个明白:这个类主要 是用来限制SQL连接字符串的连接信息,例如只能访问特定的数据库,特定的IP地址或者其他等等。设置好SqlClientPermission实例以 后,新建立的SqlConnection实例就要完全按照其格式进行,否则就会抛出异常。或者说设置了SqlClientPermission实例就是给 这个应用程序方案设置了属性,这个属性是用来限制数据库连接字符串的。
需要引用的命名空间:system.data 、system.data.sqlclient 、system.security.permissions (没见过这个命名空间吧)。
例子解说:
1、新建立一个SqlClientPermission实例。
Dim perm As New SqlClientPermission(PermissionState.None)
perm.Add("data source=10.10.10.158,23;initial catalog=Northwind", "user id=;password=", KeyRestrictionBehavior.AllowOnly)
perm.PermitOnly()
引用System.security.Permissions就是为了PermissionState这个参数,不然就无法引用(除非写完整的路径:Dim perm As New SqlClientPermission(System.Security.Permissions.PermissionState.None))。
PermissionState有两个成员分别是None和Unrestricted,他们的含义分别是:
None:不能对该权限所保护的资源进行访问;意即:默认的Deny All;
Unrestricted:可以对该权限保护的资源进行访问;意即:默认的 Permit All;
Perm.add 方法添加配允许的链接字符串(先是None将所有的链接都设为非法,然后添加可以被允许的字符串。先严后松)。一共有三个参数,第一个参数是必须使用的字 符串,第二个参数是可以选择使用的字符串,本例来说就是可以自定义用户名和密码,但是不能自己选择数据库服务器和数据库;第三个参数就是被允许的方式, AllowOnly,也就是这个链接字符串时被允许的。
Perm.permitonly方法是开启这个SqlClientPermission,并且只允许AllowOnly的链接字符串。后面进行数据库连接的时候,默认就要遵循这个规则。
2、建立SqlConnection字符串
Dim conBuilder As New SqlConnectionStringBuilder
conBuilder.DataSource = TextBox1.Text
conBuilder.InitialCatalog = "Northwind"
conBuilder.UserID = "sa"
conBuilder.Password = TextBox2.Text
con.ConnectionString = conBuilder.ConnectionString
con.Open()
如果是如何要求,则运行正常,不然就会在con.open()执行的时候报错。
3、MS不建议先放开Unresticted,然后再拒绝特定的链接。可以参看后面的参考链接。
完整的代码:
Imports System.Data
Imports System.Data.SqlClient
Imports System.Security.Permissions
Public Class Form1
Dim perm As New SqlClientPermission(PermissionState.None)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim perm As New SqlClientPermission(PermissionState.None)
perm.Add("data source=10.10.10.158,23;initial catalog=Northwind", "user id=;password=", KeyRestrictionBehavior.AllowOnly)
perm.PermitOnly()
Try
Using con As New SqlConnection
'con.ConnectionString = "data source=" & TextBox1.Text & ";initial catalog=NorthWind;user id=sa;password=" & textbox2.text
Dim conBuilder As New SqlConnectionStringBuilder
conBuilder.DataSource = TextBox1.Text
conBuilder.InitialCatalog = "Northwind"
conBuilder.UserID = "sa"
conBuilder.Password = TextBox2.Text
con.ConnectionString = conBuilder.ConnectionString
con.Open()
Console.WriteLine("ok")
End Using
Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try
End Sub
End Class
Imports System.Data.SqlClient
Imports System.Security.Permissions
Public Class Form1
Dim perm As New SqlClientPermission(PermissionState.None)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim perm As New SqlClientPermission(PermissionState.None)
perm.Add("data source=10.10.10.158,23;initial catalog=Northwind", "user id=;password=", KeyRestrictionBehavior.AllowOnly)
perm.PermitOnly()
Try
Using con As New SqlConnection
'con.ConnectionString = "data source=" & TextBox1.Text & ";initial catalog=NorthWind;user id=sa;password=" & textbox2.text
Dim conBuilder As New SqlConnectionStringBuilder
conBuilder.DataSource = TextBox1.Text
conBuilder.InitialCatalog = "Northwind"
conBuilder.UserID = "sa"
conBuilder.Password = TextBox2.Text
con.ConnectionString = conBuilder.ConnectionString
con.Open()
Console.WriteLine("ok")
End Using
Catch ex As Exception
Console.WriteLine(ex.ToString)
End Try
End Sub
End Class
参考文档:
代码访问安全性和 ADO.NET:http://msdn2.microsoft.com/zh-cn/library/0x4t63kb(VS.80).aspx
SqlClientPermission 方法 :http://msdn2.microsoft.com/zh-cn/library/system.data.sqlclient.sqlclientpermission_methods(VS.80).aspx
SqlClientPermission 类 :http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemdatasqlclientsqlclientpermissionclasstopic.asp
PermissionState 枚举 :http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemsecuritypermissionspermissionstateclasstopic.asp
- SqlClientPermission 如何使用?
- SqlClientPermission
- 读取数据库 System.Data.SqlClient.SqlClientPermission 解决方法
- Request for the permission of type 'System.Data.SqlClient.SqlClientPermission failed
- 请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的
- 请求“System.Data.SqlClient.SqlClientPermission,System.Data,Version=2.0.0.0,Culture=neutral,PublickeyToken=b77a5c561934e089”类型的权限已失
- Android 如何使用使用数据库
- 如何安装使用Oracle10g
- 如何使用csdn blog
- 如何使用Log4j?
- 如何使用NetMeeting
- 如何使用 URLScan
- 如何使用线程
- 如何使用make
- 如何使用万用表
- 如何使用SQL*Loader?
- 如何使用 Quota
- 如何使用 gcc 编译程序
- javaMail发送邮件实例
- Java程序员必须了解的七大开源协议
- linux服务器下用ant实现SVN代码更新,部署
- 修复奸商扩容过的U盘
- javascript关闭窗口
- SqlClientPermission 如何使用?
- vs2008+flex builder 3+FluorineFx項目搭建
- 一点思考
- 何时使用聚集索引或非聚集索引
- 网络的bolg
- 空间开通,测试!
- 系统架构三日谈(二)__对象间的连接
- 触发器相关概念与应用
- 人工大脑之父雨果:人工智能未来或取代人类