web.config的数据库连接字符串进行加密

连接参考:http://wenku.baidu.com/link?url=nwGug8wxz143A4pvBE_kN6vMU7aF3ojwCKJOyN-TQleZ07iAYrjx_FnFVDOtZAF8gbJ8UIwZXoPMWk7J0iZNd3IP_niggQGMLr2A6UgTcC3

旧版本的ASP.NET将连接字符串直接保存在ASPX页面中。回想一下,连接字符串包 含了数据服务器名称和用户账户等信息,有时候甚至还包含了密码。在代码中包含以上信息是非常不好的习惯,原因有二。首先,这些信息可以被设计小组中的每一 位程序人员看到(但是站点访问者不能在浏览器上看到)。第二,在整个Web站点中的每一个拥有该连接的地方,都必须进行维护和更新。更新密码成为了一项繁 重的工作。

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;[email protected];min pool size=4;max pool size=4;"
   providerName="System.Data.SqlClient" />
  <add name="SQLMembershipConnString"
connectionString="server=FOX;database=MSPetShop4Services;user
id=mspetshop;[email protected];min pool size=4;max pool size=4;"
   providerName="System.Data.SqlClient" />
  <add name="SQLConnString1"
connectionString="server=FOX;database=MSPetShop4;user
id=mspetshop;[email protected];min pool size=4;max pool size=4;"
   providerName="System.Data.SqlClient" />
  <add name="SQLConnString2"
connectionString="server=FOX;database=MSPetShop4;user
id=mspetshop;[email protected];max pool size=4;min pool size=4;"
   providerName="System.Data.SqlClient" />
  <add name="SQLConnString3"
connectionString="server=FOX;database=MSPetShop4Orders;user
id=mspetshop;[email protected];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集成验证怎么也登不上去的原因。

后来发现在安装目录下有两个批处理文件:

1、加密EncryptWebConfig.bat

@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

2、解密DecryptWebConfig.bat

@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

加黑的就是两个文件的区别。

时间: 2024-10-16 15:01:17

web.config的数据库连接字符串进行加密的相关文章

web.config connectionStrings 数据库连接字符串的解释

先来看一下默认的连接SQL Server数据库配置<connectionStrings>   <add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="

ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法

在ASP.NET开发的网站根目录,有一个名为web.config的文件,顾名思义,这是为整个网站进行配置的文件,其格式为XML格式.这里主要谈谈文件中的<connectionStrings>节. <connectionStrings>节是对连接到数据库的字符串进行配置,由于MS SQL Server与ASP.NET同属于微软的产品,因此是使用ASP.NET开发时首选的数据库是MS SQL Server,本文只讨论对MS SQL Server的连接字符串情况.第一种情况,本地开发时,

web.config connectionStrings 数据库连接字符串的解释(转载)

先来看一下默认的连接SQL Server数据库配置<connectionStrings>   <add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="

不同数据库下的web.config中数据库连接字符串

<connectionStrings> <add name="OADBConnectionString" connectionString="Data Source=HONG-PC\SQL2005;Initial Catalog=OADB;User ID=sa;Password=123456" providerName="System.Data.SqlClient" /> <add name="SqlSer

ASP.NET数据库连接字符串的加密与解密

ASP.NET web.config中,数据库连接字符串的加密与解密. 虽然不怎么新鲜,但相信还是有许多人不知道,好,不说废话,直接给方法:开始--->运行,输入cmd,接着输入以下内容 加密: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "你的Web项目路径" 解密: C:\WINDOWS\Microsoft.NET\Fram

利用ASP.NET加密和解密Web.config中连接字符串

介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Server, Ajax, JavaScript等的文章.大多数情况下,我都把数据库的连接字符串放在了web.config中.其中包含许多敏感信息,包括连接数据库的用户名密码等.然而我们在web.config和machine.config中以纯文本的方式保存密码安全吗? 如果我们的程序只是部署在内部服务器中,这应该没

Web.config配置数据库连接

web.config配置数据库连接 第一种:取连接字符串 string connString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["SqlConnStr"].ConnectionString; 或者 protected static string connectionString = ConfigurationManager.ConnectionStrings["SqlCon

web.config 修改数据库连接

<connectionstrings> </database=数据库名字 ;uid = 登录数据库名字;Password = 登录数据库的密码;/> </connectionstrings>

如何对web.config进行加密和解密

在WEB网站开发过程中,如果我们将数据库连接字符串封装到.DLL文件中,将会给数据库和程序的迁移带来麻烦,因为万一服务器地址或者数据库发生变更,那么我们就不得不修改源程序并重新将其编译.更好的解决方法是将数据库连接字符串写入到web.config配置文件中,可问题是将连接字符串写入到web.config文件中之后,任何人都能打开看到所连接的数据库名和密码,又会带来安全隐患,因此为了保证数据库的安全性,我们可以通过使用微软IDE自带的命令aspnet_regiis.exe将配置文件web.conf