鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 服务器相关 > 批处理 > >

加密解密ASP.NET的web.config中的连接字符串

来源:互联网 作者:佚名 时间:2015-12-13 07:34
ASP.NET 2.0提供了一个选项可以将连接字符串移动至Web.config文件的连接区域,给字符串一个名称并将其加密。然后ASP.NET 2.0页面就通过这个名称来引用连接字符串。保存连接字符串至Web.config的步骤并不复杂。打开位于站点根目录下的Web.config文件。找 到被

ASP.NET 2.0提供了一个选项可以将连接字符串移动至Web.config文件的连接区域,给字符串一个名称并将其加密。然后ASP.NET 2.0页面就通过这个名称来引用连接字符串。保存连接字符串至Web.config的步骤并不复杂。打开位于站点根目录下的Web.config文件。找 到被<connectionString>界定的区域(如果不存在,可自行添加)并在<Add>标记中输入如下代码。该标记有三 个属性:name、connectionString和providerName。属性name就是将会在页面中使用的连接字符串的普通名称。 connectionString属性应当设置为连接至数据库的完整的连接字符串,如前所述。

e.g.

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
 <connectionStrings>
  <add name="SQLProfileConnString" connectionString="server=FOX;database=MSPetShop4Profile;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
   providerName="System.Data.SqlClient" />
  <add name="SQLMembershipConnString" connectionString="server=FOX;database=MSPetShop4Services;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
   providerName="System.Data.SqlClient" />
  <add name="SQLConnString1" connectionString="server=FOX;database=MSPetShop4;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
   providerName="System.Data.SqlClient" />
  <add name="SQLConnString2" connectionString="server=FOX;database=MSPetShop4;user id=mspetshop;password=pass@word1;max pool size=4;min pool size=4;"
   providerName="System.Data.SqlClient" />
  <add name="SQLConnString3" connectionString="server=FOX;database=MSPetShop4Orders;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
   providerName="System.Data.SqlClient" />
  <add name="OraProfileConnString" connectionString="" providerName="System.Data.OracleClient" />
  <add name="OraMembershipConnString" connectionString="" providerName="System.Data.OracleClient" />
  <add name="OraConnString1" connectionString="" providerName="System.Data.OracleClient" />
  <add name="OraConnString2" connectionString="" providerName="System.Data.OracleClient" />
  <add name="OraConnString3" connectionString="" providerName="System.Data.OracleClient" />
 </connectionStrings>
 <appSettings>
  <!-- Pet Shop DAL configuration settings. Possible values: PetShop.SQLServerDAL for SqlServer, PetShop.OracleServerDALfor Oracle. -->
 </appSettings>
</configuration>

通过使用命令,可以将Web.config文件的连接字符串区域加密。当ASPX页面请求连接字符串时,将由ASP.NET自动对信息进行解密。加 密必须由以下命令行来执行。依次单击Start/Run/cmd并切换至C:\WINDOWS\ Microsoft.net\ Framework\ v2.0.xxxx,其中xxxx是您的软件版本。如果C:\Websites\BegAspNet2Db是站点根目录的话,即可输入如下命令行:

aspnet_regiis –pef connectionStrings C:\Websites\BegAspNet2Db

加密连接字符串的命令行工具还可以使用虚拟路径语法(在IIS元数据库中的路径),而无需指定Web.config文件的完全限定路径,如下所示:

aspnet_regiis –pe connectionStrings –app /BegAspNet2Db

一旦执行完了加密过程,就可以打开Web.config文件,但是连接字符串已经被混淆。当ASP.NET需要,连接字符串即可自动解密,或者如果需要进行一些更改,例如修改密码,则可以手动输入以下代码来解密。

aspnet_regiis –pdf connectionStrings c:\Websites\BegAspNet2Db

请注意,在默认情况下,加密过程使用了一个基于加密算法执行的机器的键。解密过程(无论手动还是在处理页面过程中)必须发生在与加 密相同的机器上。例如,作为XCOPY部署的一部分,移动Web.config至另外一台机器将会导致Web.config无法解密,所以推荐在部署 Web站点至最终机器之后,再将连接字符串进行加密。

PS:petshop4.0安装的时候如果选择 “Full Install”,那么配置文件默认就加密了,这也是我一开始怎么也找不到连接字符串,然后用windows集成验证怎么也登不上去的原因。

<无>
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "D:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
PAUSE@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "D:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
PAUSE
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "D:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
PAUSE
网友评论
<