如何加密ASP.NET配置数据

转载 2012年05月27日 19:50:10

 

本文摘自:http://tech.it168.com/KnowledgeBase/Articles/8/2/c/82c207a33f1d01b3fa822a593ff17e75.htm

受保护的配置

ASP.NET 2.0推出了一个受保护的配置(protected configuration)特性,允许您使用数据加密API(DPAPI)RSA加密对machine.config和web.config文件进行加密。开发者一直希望这种类型的功能,以便可以对连接字符串、账户证书等敏感数据加以保护。

这项功能允许开发者加密配置文件的一个或几个部分。下表列出了一些可以进行加密的部分:

  • appSettings:定义和存储定制应用值。
  • connectionStrings:通过数据库连接字符串访问外部数据源。
  • Identity:包含Web应用程序身份,其中可能包括模拟证书。
  • SessionState:给当前应用程序配置会话状态设置。

您不能使用受保护配置特性来配置web.config和machine.config文件的以下部分:

  • processMode
  • runtime
  • mscorlib
  • startup
  • system.runtime.remoting
  • configProtectedData
  • satelliteassemblies
  • cryptographySettings
  • cryptoNameMapping
  • cryptoClasses

.NET Framework提供两种方法加密配置文件:aspnet_regiis.exe命令行实用工具和开发者应用程序代码加密。本文主要说明命令行加密方法。

ASP.NET IIS注册工具

ASP.NET IIS注册工具(aspnet_regiis.exe)是.NET Framework框架的一个标准组成部分。它允许您更新一个ASP.NET应用程序的脚本映射,使其指向与工具相关的ASP.NET ISAPI版本,因为一个系统中可能存在几个ASP.NET版本。您还可以用这个工具来显示所有已安装ASP.NET版本的状况,注册与工具关联的ASP.NET版本,创建客户-脚本目录,并执行其它配置操作。

这个工具包含大量的命令行选项,包括加密(pef)和解密(pdf)。您可以使用/?选项获得帮助。加密选项利用DPAPI加密数据。下面我将以列表A中的web.config文件为例进行说明:

列表A

<?xml version="1.0"?>

<configuration>

<appSettings>

<add key="site" value="TechRepublic.com" />

</appSettings>

<connectionStrings>

<add name="db" connectionString="connection details" />

</connectionStrings>

<system.web>

<compilation debug="true"/>

<authentication mode="Windows"/>

<authorization>

<allow users="tester"/>

</authorization>

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">

<error statusCode="403" redirect="NoAccess.htm"/>

<error statusCode="404" redirect="FileNotFound.htm"/>

</customErrors>

</system.web>

</configuration>

有了这个文件,我就可以用下面的命令行加密配置文件connectionStrings部分的内容:

aspnet_regiis -pef "connectionStrings" "c:inetpubwwwroottrconfig"

上面命令的结构非常简单,如下表所述:

  • aspnet_regiis:ASP.NET IIS注册工具。
  • -ped:加密一个配置文件配置部分的命令行选项。
  • “connectionStrings”:被加密部分的名称。
  • “c:inetpubwwwroottrconfig”:本地网站的物理地址。

完成后,您将收到一段成功或失败信息。例如,列表B中包含connectionStrings部分被加密的web.config文件。(如果您希望复制并粘贴代码,这里是列表B的链接。)

<?xml version=”1.0″?>

<configuration xmlns=”http://schemas.microsoft.com/.NetConfiguration/v2.0″>

<appSettings>

<add key=”site” value=”TechRepublic.com” />

</appSettings>

<connectionStrings configProtectionProvider=”RsaProtectedConfigurationProvider”>

<EncryptedData Type=http://www.w3.org/2001/04/xmlenc#Element

xmlns=”http://www.w3.org/2001/04/xmlenc#”>

<EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#tripledes-cbc” />

<KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>

<EncryptedKey xmlns=”http://www.w3.org/2001/04/xmlenc#”>

<EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#rsa-1_5″ />

<KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>

<KeyName>Rsa Key</KeyName>

</KeyInfo>

<CipherData>

<CipherValue>hlcvZ+8tPctwMZ5L68zsjWR5uySk5iqbGN6vNa94xrvdAEg2hIo1cexVOITMnVHdBfU7rXWoo3X5KfB3JhrBQQZdFXtAGqR7J3I4GUm6JDu7wWgM5Npb0Vyh+l6FwwEQYj7GfulTO+I3rWLkG7E44Sqzv75VG9QIU7oBH0d+jXo=</CipherValue>

</CipherData>

</EncryptedKey>

</KeyInfo>

<CipherData>

<CipherValue>oEe1fu5aiY0AtsgovXG7TVdxSZw8FU1w18LhdSmL5pptKtOnSYIZ6gVzm9B5/n4t5PWsn7BqGmd535JPe4G+TAqIyiniYQEKLXW3YVHRJX19vlwIIn6y3nyyy8gHE2kHC3LBvkqAtE7sbRlVxGSxpA==</CipherValue>

</CipherData>

</EncryptedData>

</connectionStrings>

<system.web>

<compilation debug=”true” defaultLanguage=”c#” />

<authentication mode=”None” />

<authorization>

<allow users=”tester”/>

</authorization>

<customErrors mode=”RemoteOnly” defaultRedirect=”GenericErrorPage.htm”>

<error statusCode=”403″ redirect=”NoAccess.htm”/>

<error statusCode=”404″ redirect=”FileNotFound.htm”/>

</customErrors>

</system.web>

</configuration>

文件的其它部分没有变化,但您也可以选择加密其它部分。例如,您可以加密实例文件中的appSettings部分,屏蔽它的数据,以免别人窥视。

如果您使用一个加密文件,您就需要对它进行解密,用命令行可以方便地进行解密。下面的命令行将前面web.config文件的connectionStrings部分应用的加密过程进行解密。

aspnet_regiis -pdf "connectionStrings" "c:inetpubwwwroottrconfig"

这个命令将加密文件返回到明文版本,因此您可以对其进行修改,并在编辑完成后重新加密。

ASP.NET加密Web.config 配置文件

可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码、数据库连接字符串和加密密钥)。对配置信息进行加密后,即使攻击者获取了对配置文件的访问...

ASP.NET(C#)常用数据加密和解密方法汇总

ASP.NET(C#)常用数据加密和解密方法汇总  一、            数据加密的概念 1、  基本概念 2、  基本功能 3、  加密形式  二、            数据加密的...

ASP.NET(C#)常用数据加密和解密方法汇总

本文是关于:ASP.NET(C#)常用数据加密和解密方法汇总 关键点asp.net 加密解密,asp.net md5解密,asp.net解密,asp.net extjs 解密,asp.net md5...

ASP.NET(C#)常用数据加密和解密方法汇总

转至http://www.cnblogs.com/skylaugh/archive/2011/07/12/2103572.html   应同事所邀把ASP.NET(C#)常用数据加密和解密方法列出...

那些年朋友劝,该知道的ASP.NET -如何加密ASP.NET配置数据

ASP.NET 2.0推出了一个受保护的配置(protected configuration)特性,允许您使用数据加密API(DPAPI)或RSA加密对machine.config和web.confi...

用ASP.NET加密Cookie数据

  • 2008年10月11日 16:12
  • 43KB
  • 下载

ASP.NET MVC 环境下CKeditor 的配置以及用jQuery进行数据存取操作

由于项目中要用到富文本编辑器,在网上搜到一些关于FCKeditor和CKeditor配置的文章,但实际在项目中用起来还是有些出入。因此,在这里跟大家一起分享下自己在配置CKeditor的过程,本人菜鸟...

asp.net数据连接串配置大全

关于数据库链接字符串的相关知识,我们介绍过很多,建议大家看看这两篇文章,《深入了解SQL Server连接字符串》和《MySql连接字符串的说明》,供参考。下面介绍ASP.NET数据库连接字符串总结 ...

ASP.NET通过配置Web.config中数据库连接地址并封装一个类来简化数据源配置

用的是VS2012旗舰版
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何加密ASP.NET配置数据
举报原因:
原因补充:

(最多只允许输入30个字)