对web.config中的数据库连接字符串进行加密
2012-04-11 15:47
225 查看
网站部署在客户服务器上,但是网站所用的数据库要连接公司mssql服务器。如果数据库连接字符串明文写在web.config中,将是相当危险的事情。
在命令提示符总进入到C:\WINDOWS\Microsoft.net\Framework\v4.0.xxxx,其中xxxx是您的软件版本。路径为web.config所在目录。
加密:
aspnet_regiis–pefconnectionStringsC:\Sales
需要注意的是如果连接字符串写在appSettings下需要改成:
aspnet_regiis–pefappSettingsC:\sales
一旦执行完了加密过程,就可以打开Web.config文件,但是连接字符串已经被混淆。当ASP.NET需要,连接字符串即可自动解密,或者如果需要进行一些更改,例如修改密码,则可以手动输入以下代码来解密。
aspnet_regiis–pdfconnectionStringsc:\Websites\BegAspNet2Db
请注意,在默认情况下,加密过程使用了一个基于加密算法执行的机器的键。解密过程(无论手动还是在处理页面过程中)必须发生在与加密相同的机器上。例如,作为XCOPY部署的一部分,移动Web.config至另外一台机器将会导致Web.config无法解密,所以推荐在部署Web站点至最终机器之后,再将连接字符串进行加密。
但是如果用这种方式加密,仅仅能防止普通用户查看密码,因为用aspnet_regiis–pdf同样能轻而易举的解密!
解决方法是加上一个RSA密钥容器。
假設今天我們要加密web.config,並部署到三台機器上,全部操作如下:
用aspnet_regiis-pc"SharedKeys"–exp建立三台機器共用的RSA金鑰容器(KeyContainer)
以aspnet_regiis-px"SharedKeys"keys.xml-pri將RSA金鑰容器匯出成XML檔
將keys.xml複製到三台機器上
在三台機器上執行aspnet_regiis-pi"SharedKeys"keys.xml滙入RSA金鑰容器
在三台機器上執行aspnet_regiis-pa"SharedKeys""NTAUTHORITY\NETWORKSERVICE"授與ASP.NET程式執行權限(2010-08-30更新:IIS7.5預設會使用IISAPPPOOL\YourAppPoolName帳號而非NTAUTHORITY\NETWORKSERVICE,詳情可參見保哥的文章,以下應用到授權的地方均比照,不再重複說明。)
在web.config中加入
<configProtectedData>
<providers>
<addkeyContainerName="SharedKey"useMachineContainer="true"
name="SharedKey"type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</configProtectedData>
使用aspnet_regiis-pe"connectionStrings"-app"/WebApplication"-prov"SharedKeys"加密連線字串區
將加密後的web.config部署到三台機器上
找来找去还是微软的文档全面:
http://msdn.microsoft.com/zh-cn/library/yxw286t2(v=vs.100).aspx
在命令提示符总进入到C:\WINDOWS\Microsoft.net\Framework\v4.0.xxxx,其中xxxx是您的软件版本。路径为web.config所在目录。
加密:
aspnet_regiis–pefconnectionStringsC:\Sales
需要注意的是如果连接字符串写在appSettings下需要改成:
aspnet_regiis–pefappSettingsC:\sales
一旦执行完了加密过程,就可以打开Web.config文件,但是连接字符串已经被混淆。当ASP.NET需要,连接字符串即可自动解密,或者如果需要进行一些更改,例如修改密码,则可以手动输入以下代码来解密。
aspnet_regiis–pdfconnectionStringsc:\Websites\BegAspNet2Db
请注意,在默认情况下,加密过程使用了一个基于加密算法执行的机器的键。解密过程(无论手动还是在处理页面过程中)必须发生在与加密相同的机器上。例如,作为XCOPY部署的一部分,移动Web.config至另外一台机器将会导致Web.config无法解密,所以推荐在部署Web站点至最终机器之后,再将连接字符串进行加密。
但是如果用这种方式加密,仅仅能防止普通用户查看密码,因为用aspnet_regiis–pdf同样能轻而易举的解密!
解决方法是加上一个RSA密钥容器。
假設今天我們要加密web.config,並部署到三台機器上,全部操作如下:
用aspnet_regiis-pc"SharedKeys"–exp建立三台機器共用的RSA金鑰容器(KeyContainer)
以aspnet_regiis-px"SharedKeys"keys.xml-pri將RSA金鑰容器匯出成XML檔
將keys.xml複製到三台機器上
在三台機器上執行aspnet_regiis-pi"SharedKeys"keys.xml滙入RSA金鑰容器
在三台機器上執行aspnet_regiis-pa"SharedKeys""NTAUTHORITY\NETWORKSERVICE"授與ASP.NET程式執行權限(2010-08-30更新:IIS7.5預設會使用IISAPPPOOL\YourAppPoolName帳號而非NTAUTHORITY\NETWORKSERVICE,詳情可參見
在web.config中加入
<configProtectedData>
<providers>
<addkeyContainerName="SharedKey"useMachineContainer="true"
name="SharedKey"type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</configProtectedData>
使用aspnet_regiis-pe"connectionStrings"-app"/WebApplication"-prov"SharedKeys"加密連線字串區
將加密後的web.config部署到三台機器上
找来找去还是微软的文档全面:
相关文章推荐
- web.config的数据库连接字符串进行加密
- 如果想对web.config的数据库连接字符串进行加密的话,这里提供了两个方法:
- 对web.config的数据库连接字符串进行加密
- 对web.config的数据库连接字符串进行加密
- 我们如果想对web.config的数据库连接字符串进行加密的话,那么这里提供了两个方法。
- 对web.config中的数据库连接字符串进行加密
- 对Webconfig中的连接字符串进行加密
- asp.net加密web.config 加密数据库连接字符串
- ASP.NET web.config中,数据库连接字符串的加密与解密
- web.config connectionStrings 数据库连接字符串的解释
- 利用ASP.NET加密和解密Web.config中连接字符串
- 为web.config写入数据库连接字符串的方法
- web.config connectionStrings 数据库连接字符串的解释(转载)
- web.config connectionStrings 数据库连接字符串的解释(转载)
- 加密webconfig中的连接字符串,利用RSA非对称加密,利用windows保存密钥容器
- C#获取web.config连接数据库字符串
- ASP.NET SqlDataSource中使用web.config 共享数据库连接字符串(详细)
- 保存(Access)数据库连接字符串的两种方法web.config
- Web.config中关于数据库连接字符串配置问题
- 为web.config写入数据库连接字符串的方法