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

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

1.    加密通用语法 
 
加密一个特定网站的web.config文件的通用形式
  aspnet_regiis.exe -pef secion
physical_directory -prov provider
  或
  aspnet_regiis.exe -pe
secion -app virtual_directory -prov provider
 
其中,各个参数的含义如下:

  • section表示要加密的配置节

  • physical_directory用于指定站点的物理路径。

  • virtual_directory用户指定虚拟路径。

  • provider指定加密提供程序。

加密一个特定站点的连接字符串就是:
   
aspnet_regiis.exe -pef "connectionStrings" "你的web项目路径" -prov
"DataProtectionConfigurationProvider"
   
其中DataProctionConfiguartionProvider是Windows数据保护API(DPAPI)提供程序,它使用Windows内置的密码学技术来加解密配置节。默认情况下,这个提供程序使用本机的密钥。

2.    加密方法

  运行Visual Studio 2008命令提示

加密后的结果

  1. <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">

  2. <EncryptedData>

  3. <CipherData>    <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==</CipherValue>

  4. </CipherData>

  5. </EncryptedData>

  6. lt;/connectionStrings>

3.    解密 
  
解密该连接字符串也很简单
   aspnet_regiis.exe -pdf "connectionStrings"
‘你的web项目路径"

解密后的结果:

  1. <connectionStrings>

  2. <add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />

  3. </connectionStrings>


4.   
后台代码读取配置文件web.config中数据库连接字符串的方法:

  1. using System.Configuation;


  2. protected void Page_Load(object sender, EventArgs e)

  3. {

  4. lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();

  5. }

运行效果图:

5.   
在连接字符串的加密和解密的过程中,需要注意一下几点。

  • 使用加密的连接字符串

使用加密的连接字符串不需要编码解密,ASP.NET会自动对加密内容进行解密。

  • 加密和解密在同一台计算机上使用

在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。

  • 中文路径问题

该命令对中文支持不是很好。如果站点的路径中有中文字符,也许不能正常加解密。

如何对web.config进行加密和解密,码迷,mamicode.com

时间: 2024-10-13 22:29:06

如何对web.config进行加密和解密的相关文章

JAVA WEB实现前端加密后台解密

最近在研究登陆密码的加密,下边上具体代码,只是给出核心代码,具体的代码视业务而定吧,给位有什么问题或者意见请留言. 加密方法用的是AES-128-CBC,BASE64用的是org.apache.commons.codec.binary.Base64 JS代码: var password = "1234567890,./"; var key = CryptoJS.enc.Utf8.parse("0102030405060708");//密钥,128位加密密钥为16位

加密解密技术—Web.config加密和解密

阅读目录 一:我们为什么要对web.config配置文件中的配置节加密? 二:怎么样加密和解密? 三:实例 四:运行效果 一:我们为什么要对web.config配置文件中的配置节加密? 因为在我们的项目中,有的配置节可能包含敏感信息,我们看下面的<connectionStrings/>配置节中包含了我们连接 数据库的用户名和密码以及IP地址,这要是暴露出去是很危险的,还有<identity/>配置节中包含了运行时使用的模拟账号的用户名和密 码,这些配置节都包含着敏感信息,我们不希望

说一说ASP.NET web.config 加密及解密方法 (代码)

/// <summary> /// 保护web.config的加密和解密 /// </summary> public class ProtectHelper { /// <summary> /// 解密 /// </summary> /// <param name="pToDecrypt">加密连接字符串</param> /// <param name="sKey">自定义密钥<

对web.config加密,和解密码详细说明

可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码.数据库连接字符串和加密密钥).对配置信息进行加密后,即使攻击者获取了对配置文件的访问,也可以使攻击者难以获取对敏感信息的访问,从而改进应用程序的安全性. 针对asp.net 2.0的应用程序的数据库链接字符串进行加密:例如,未加密的配置文件中可能包含一个指定用于连接到数据库的连接字符串的节,如下面的示例所示: <configuration> <connectionStrin

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

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

web.config 加密/解密

(Aspnet_regiis.exe) 这样的一个工具,可以对站点的.config文件的节进行加密 方法: #> 加密:aspnet_regiis -pef "加密的web.config里面的配置节名称" "web.config文件所处的目录" #> 解密:aspnet_regiis -pdf "加密的web.config里面的配置节名称" "web.config文件所处的目录" web.config 加密/解密,

加密,解密web.config数据库连接字符串

"connectionStrings" 路径是web.config所在的工程目录. 1.加密EncryptWebConfig.bat @echo offC:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" "D:\Web"PAUSE 2.解密DecryptWebConfig.bat @echo offC:\Windows\M

aspnet_regiis 加密/解密 web.config

加密: @echo off echo web.config c: cd c:\windows\Microsoft.NET\Framework64\v4.0.30319 aspnet_regiis -pe "appSettings" -app "/XXX" aspnet_regiis -pe "connectionString" -app "/XXX" aspnet_regiis -pe "system.web/ide

加密web.config中的邮件配置mailSettings

加密: 在命令提示符下键入: aspnet_regiis -pef connectionStrings 要加密的web.config完整路经 演示样例:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>aspnet_regiis -pef "connectionStrings" "D:\Scode\cpb2cNew\branches\trunk\src\client\CP.Client" 解密: 在命