在ASP.NET 2.0中操作数据之七十一:保护连接字符串及其它设置信
在加密前,我暂时地将<CipherData>元素里的内容转移了: <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider"> <EncryptedData> <CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/...zChw==</CipherValue> </CipherData> </EncryptedData> </connectionStrings> 注意:<connectionStrings>元素指定了用来加密的provider(即DataProtectionConfigurationProvider).当点击“Decrypt Connection Strings”按钮时UnprotectSection方法将会用到该信息.对于加密的连接字符串,系统可以自动的对其解密.简而言之,我们不需要再对加密的<connectionString>节点添加任何其它的代码。我们来做个验证,打开以前的教程,比如(~/BasicReporting/SimpleDisplay.aspx页面),如图5所示,页面像我们期望的那样工作正常,这就表明了经过加密的连接字符串被ASP.NET页面自动解密了.
为将加密的<connectionStrings>节点恢复到纯文本样式,点击“Decrypt Connection Strings”按钮。页面回传后,你将看到Web.config文件里的连接字符串恢复到纯文本样式.此时,屏幕开起来像是最初登录的样子(见图3) 第三步:用aspnet_regiis.exe对配置节点进行加密 .NET Framework包含了很多的命令行工具,可以在$WINDOWS$/Microsoft.NET/Framework/version/ folder文件夹里找到这些工具.以第59章《使用SQL缓存依赖项SqlCacheDependency 》为例,我们用aspnet_regsql.exe命令行工具为SQL缓存依赖添加里必要的体系结构.该文件夹里的另一个有用的工具是ASP.NET IIS Registration tool (aspnet_regiis.exe). 就像其名字暗示的那样,这个ASP.NET IIS Registration工具主要用来在微软专业Web server,IIS上注册ASP.NET 2.0应用程序. 除了其与IIS相关的属性外,该ASP.NET IIS Registration工具也可以对Web.config文件的配置节点进行加密和解密. 下面的是使用aspnet_regiis.exe命令行工具对配置节点加密的常规代码: aspnet_regiis.exe -pef section physical_directory -prov provider 其中section是要加密的配置节点(比如“connectionStrings”);physical_directory 为web应用程序根节点的完整物理路径;provider是用到的protected configuration provider的名称(比如“DataProtectionConfigurationProvider”). 另外,如果你将web应用程序在IIS里进行了注册了的话,你就可以用相当路径来代替绝对路径: aspnet_regiis.exe -pe section -app virtual_directory -prov provider 下面为使用aspnet_regiis.exe的例子,它用DPAPI provider,机器级密匙,对<connectionStrings>节点进行加密: aspnet_regiis.exe -pef 类似的,该aspnet_regiis.exe命令行工具也可以用来解密配置节点,不过我们要将-pef替换成-pdf或-pd。当然,解密时不需要指定provider名称. aspnet_regiis.exe -pdf section physical_directory -- or -- aspnet_regiis.exe -pd section -app virtual_directory 注意:由于我们使用的是DPAPI provider,它使用的密匙是又电脑指定的,所以你必须在存储web页面的同一台电脑上运行aspnet_regiis.exe工具. 比如,你在本地电脑上运行这个命令行,然后又将加了密的连接字符串上载到另一个服务器上,该服务器就无法对其进行解密,因为加密的密匙是在本地电脑上指定的.如果是使用RSA provider的话就不存在这种局限性,因为RSA provider可以将密匙(RSA keys)传递给另一台电脑. 理解Database Authentication Options 在任何应用程序向Microsoft SQL Server数据库发出SELECT,INSERT,UPDATE,或DELETE请求之前,数据库首先要确定请求者的身份.该过程可分为2种验证模式:authentication 和 SQL Server provides: .Windows Authentication:在Visual Studio 2005的ASP.NET Development Server里运行一个ASP.NET应用程序时,ASP.NET应用程序假定身份(identity)为当前登录用户。而如果运行在Microsoft Internet Information Server (IIS)上的话,ASP.NET应用程序假定身份(identity)为domainName/MachineName or domainName/NETWORK SERVICE,,虽然这些都可以用户定制. .SQL Authentication:验证的时候需要提供用户ID和password,使用SQL authentication的话,可以由连接字符串来提供ID和password. 一般使用Windows authentication模式,因为其更安全.在Windows authentication模式下,连接字符串不需要用户名和密码,并且如果web服务器和数据库服务器分属不同的电脑的话,(credentials)认证在网络间传输时并不以纯文本格式传输.而如果是SQL authentication模式的话,将对连接字符串进行硬编码,且认证在web服务器和数据库服务器之间以纯文本格式进行传输. 本教程使用的是Windows authentication.我们可以通过连接字符串来查看到底使用的是哪种认证。本教程的Web.config文件的连接字符串如下: Data Source=./SQLEXPRESS; AttachDbFilename=|DataDirectory|/NORTHWND.MDF; Integrated Security=True; User Instance=True 术语“Integrated Security=True”,以及缺少用户名和密码都表明我们使用的是Windows authentication模式。不过在一些连接字符串里用术语“Trusted Connection=Yes” 或 “Integrated Security=SSPI”来替换“Integrated Security=True”, 不过它们都表明使用的是Windows authentication. 下面的代码显示使用的是SQL authentication: Server=serverName; Database=Northwind; uid=userID; pwd=password (编辑:滁州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |