web.config的字符串加密是怎么做的
2个回答
展开全部
一、如何对Web.config中数据库连接字符串进行加解密,避免明文方式。 1)概述:
Web.Config 中可以存储数据库连接语句,通常存于 配置节中,程序调用非常方便,但是在系统的应用过程中,利用明文存储这些敏感信息是不安全的,这就需要对配置信息进行加密,加密后即使攻击者获取了对配置文件的访问,也可以使攻击者难以获取对敏感信息的访问,从而改进应用程序的安全性。
使用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 加密或解密 Web 配置文件的各节。而在在处理 Web.config 文件时,ASP.NET 将自动解密已加密的配置元素。
要加密配置文件的内容, 通过Aspnet_regiis.exe 工具与 –pe 选项以及要加密的配置元素的名称一起使用,利用.NET Framework 提供的2种受保护配置程序来实现节点加解密:
名为DataProtectionConfigurationProvider的 DPAPIProtectedConfigurationProvider 实例使用 Windows 数据保护 API (DPAPI) 对数据进行加密和解密。
名为RsaProtectedConfigurationProvider的 RsaProtectedConfigurationProvider 实例使用 RSA 加密算法对数据进行加密和解密。该提供程序配置为默认提供程序
下面就这2中加密方式,分别进行举例如下:
2)使用DPAPIProtectedConfigurationProvider 来加解密配置节
利用aspnet_regiis -pef connectionStrings 对web.config 加密 在服务器命令提示符下,输入如下命令:
C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pef connectionStrings D:\程序\某系统\EpointBid_HuiYuan –prov DataProtectionConfigurationProvider 正在加密配置节„ 成功!
-pef 指定两个参数:
这里 connectionStrings 是要进行加密的配置节,后面是具体的程序路径 这里 D:\程序\某系统\EpointBid_HuiYuan 是要加密的配置文件所在的物理目录。
-prov 表示使用哪个驱动来加密,一共有两个驱动可选,在类似于
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG 的位置,我们可以找到 machine.config 文件,在其 configProtectedData 配置节,我们可以看到这两个驱动的名称,以及默认的驱动是哪一个。这两个驱动是 RsaProtectedConfigurationProvider(类名 RsaProtectedConfigurationProvider,详细操作见下说明示例)和
DataProtectionConfigurationProvider(类名 DpapiProtectedConfigurationProvider)。
如果不加驱动选项,则采用默认驱动进行加密。
Web.Config 中可以存储数据库连接语句,通常存于 配置节中,程序调用非常方便,但是在系统的应用过程中,利用明文存储这些敏感信息是不安全的,这就需要对配置信息进行加密,加密后即使攻击者获取了对配置文件的访问,也可以使攻击者难以获取对敏感信息的访问,从而改进应用程序的安全性。
使用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 加密或解密 Web 配置文件的各节。而在在处理 Web.config 文件时,ASP.NET 将自动解密已加密的配置元素。
要加密配置文件的内容, 通过Aspnet_regiis.exe 工具与 –pe 选项以及要加密的配置元素的名称一起使用,利用.NET Framework 提供的2种受保护配置程序来实现节点加解密:
名为DataProtectionConfigurationProvider的 DPAPIProtectedConfigurationProvider 实例使用 Windows 数据保护 API (DPAPI) 对数据进行加密和解密。
名为RsaProtectedConfigurationProvider的 RsaProtectedConfigurationProvider 实例使用 RSA 加密算法对数据进行加密和解密。该提供程序配置为默认提供程序
下面就这2中加密方式,分别进行举例如下:
2)使用DPAPIProtectedConfigurationProvider 来加解密配置节
利用aspnet_regiis -pef connectionStrings 对web.config 加密 在服务器命令提示符下,输入如下命令:
C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pef connectionStrings D:\程序\某系统\EpointBid_HuiYuan –prov DataProtectionConfigurationProvider 正在加密配置节„ 成功!
-pef 指定两个参数:
这里 connectionStrings 是要进行加密的配置节,后面是具体的程序路径 这里 D:\程序\某系统\EpointBid_HuiYuan 是要加密的配置文件所在的物理目录。
-prov 表示使用哪个驱动来加密,一共有两个驱动可选,在类似于
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG 的位置,我们可以找到 machine.config 文件,在其 configProtectedData 配置节,我们可以看到这两个驱动的名称,以及默认的驱动是哪一个。这两个驱动是 RsaProtectedConfigurationProvider(类名 RsaProtectedConfigurationProvider,详细操作见下说明示例)和
DataProtectionConfigurationProvider(类名 DpapiProtectedConfigurationProvider)。
如果不加驱动选项,则采用默认驱动进行加密。
展开全部
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命令提示
加密后的结果
[xhtml] view plain copy
<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==</CipherValue>
</CipherData>
</EncryptedData>
lt;/connectionStrings>
3. 解密
解密该连接字符串也很简单
aspnet_regiis.exe -pdf "connectionStrings" '你的web项目路径"
解密后的结果:
[xhtml] view plain copy
<connectionStrings>
<add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />
</connectionStrings>
4. 后台代码读取配置文件web.config中数据库连接字符串的方法:
[c-sharp] view plain copy
using System.Configuation;
…
protected void Page_Load(object sender, EventArgs e)
{
lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();
}
…
5. 在连接字符串的加密和解密的过程中,需要注意一下几点。
使用加密的连接字符串
使用加密的连接字符串不需要编码解密,ASP.NET会自动对加密内容进行解密。
加密和解密在同一台计算机上使用
在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。
中文路径问题
该命令对中文支持不是很好。如果站点的路径中有中文字符,也许不能正常加解密。
加密一个特定网站的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命令提示
加密后的结果
[xhtml] view plain copy
<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo+ogiigQAAAACAAAAAAADZgAAqAAAABAAAADbDjp+bAce//lsg/so66+8AAAAAASAAACgAAAAEAAAANlF3b73Kdupv/cAf4a9nPUwAQAAoTvrHdAjNjaJFEfiG7pD6sG8GMNJKGpnd4JLchu7W9XhOuPgG4C/LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/aYri1Wmlo2zyRqSkg0hQFQbObCf7lrgWEUjsv+pEOS5OVXcgNhFipVMy5iQ8sH5fNHmGg8gu5JlZQaOqYFG8ci7MGOebcQzR67krJXRBrs26lZtAj8lzf2bK+QcSqtU7Rt4C33JbLqisPL9xhfoUl9GvGTu5VS1S1H5VtErTeYXxnL7PTIr3cNjIbDMjI48LJfoOgtymT35KUdK3J0DxB68DqPaeK5QSEC/L0+6bizStRZ7BDnOngV/XfiVJnbSNYXX5IShQAAACuGn8QGUuQ4TOzkKcc891SV/CVDQ==</CipherValue>
</CipherData>
</EncryptedData>
lt;/connectionStrings>
3. 解密
解密该连接字符串也很简单
aspnet_regiis.exe -pdf "connectionStrings" '你的web项目路径"
解密后的结果:
[xhtml] view plain copy
<connectionStrings>
<add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />
</connectionStrings>
4. 后台代码读取配置文件web.config中数据库连接字符串的方法:
[c-sharp] view plain copy
using System.Configuation;
…
protected void Page_Load(object sender, EventArgs e)
{
lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();
}
…
5. 在连接字符串的加密和解密的过程中,需要注意一下几点。
使用加密的连接字符串
使用加密的连接字符串不需要编码解密,ASP.NET会自动对加密内容进行解密。
加密和解密在同一台计算机上使用
在加密过程中,使用了一个基于本机的密钥。这就意味着加密和解密必须在同一台计算机上进行,否则将不能解密。同时,在一台计算机上加密的配置,在另一台计算机上将不能正常使用。
中文路径问题
该命令对中文支持不是很好。如果站点的路径中有中文字符,也许不能正常加解密。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询