澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:config数据库连接字符串加

2019-08-10 作者:www.8455.com   |   浏览(186)

  多个开辟的系统程序从必要、设计到打包、用户选用的进程中,安全难点间接是开荒者关怀的难题。对于用户来讲,不思虑加密工具(如加密敏感等),面临的是三个系统的相继零部件集结及各样的配置文件( 如App.Config / Web.Config)。当中,涉及到安全防护难题如App.Config配置文件,里面会蕴藏众多信息,包含最不想让用户了然的服务器地址、登陆名和密码等,特殊的公文除此而外。本篇小说会进行二种方法来管理平安难题。

 

原创地址:

**一、 简介

不久前在做贰个WinForm的类别,由于使用的是在客户端直接连接数据库的法子,需求在客户端计划App.config,由于选择了Enterprise Library,需求对App.config文件里的connectionStrings片断举行加密管理,寻觅MSDN,开掘早就有了现有的工具ASP.NET IIS 注册工具 (Aspnet_regiis.exe),然则它不得不针对ASP.NET的Web.config文件,难道大家就未有章程了吧?答案自然是还是不是定的。

  (1)假使只是简单的防使用人口的话,那么你能够虚拟在appsetting或其余的配置节中放加密后的连天字符串,然后在使用的地点先解密再选用,这里小编介绍下DES加解密的格局(密匙为8位字节)。

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

转发请评释出处

**  当创立ASP.NET 2.0应用程序时,开垦者平时都把敏感的安顿音讯囤积在Web.config文件中。最规范的躬体力行就是数据库连接字符串,可是包蕴在Web.config文件中的另外敏感消息还包含SMTP服务器连接新闻和用户凭证数据,等等。尽管暗中同意情状下能够配备ASP.NET以拒绝全数对扩充名字为.config的文书财富的HTTP乞求;但是,倘若二个红客能够存取你的web服务器的文件系统的话,那么,Web.config中的敏感消息依然能够被窃取。举个例子,只怕你非常大心允许无名FTP存取你的网址,那样的话就允许一个黑客轻巧地通过FTP协议下载你的Web.config文件。

布署选项

澳门新萄京官方网站 1澳门新萄京官方网站 2

 

在web.config或app.config文件里大家平常会蕴藏一些灵活消息,比方connectionStrings也许appSettings,比方像上边包车型大巴文件。

  辛亏,通过同意加密Web.config文件中采用的有的,举例<connectionStrings>节,或你的应用程序使用的局地定制config节,ASP.NET 2.0推动化解这么些题材。配置部分能够很轻松地行使编码或aspnet_regiis.exe(贰个发令行程序)预以加密。一旦被加密,Web.config设置就可以规避"虎视眈眈"的眼睛。并且,当以编程格局从你的ASP.NET页面中追寻加密的安顿安装时,ASP.NET会自行地解密它读取的加密部分。简言之,一旦配置音信被加密,你就不须要在您的应用程序中编辑任何其余代码或利用任何更进一竿的表现来选取该加密数据。

-pdf section webApplicationDirectory 对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行解密。
-pef section webApplicationDirectory 对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行加密。
 1 /// <summary> 
 2         /// DES加密,密钥为8位字符 
 3         /// </summary> 
 4         /// <param name="strEncrypt">需要加密的字符串</param> 
 5         /// <param name="strKey">8位的密钥</param> 
 6         /// <returns></returns> 
 7         public static string DesEncrypt(string strEncrypt, string strKey) 
 8         { 
 9             if (string.IsNullOrEmpty(strEncrypt)) return null; 
10             try 
11             { 
12                 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
13                 byte[] inputByteArray = Encoding.Default.GetBytes(strEncrypt); 
14                 des.Key = ASCIIEncoding.ASCII.GetBytes(strKey); 
15                 des.IV = ASCIIEncoding.ASCII.GetBytes(strKey); 
16                 MemoryStream ms = new MemoryStream(); 
17                 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); 
18                 cs.Write(inputByteArray, 0, inputByteArray.Length); 
19                 cs.FlushFinalBlock(); 
20                 StringBuilder ret = new StringBuilder(); 
21                 foreach (byte b in ms.ToArray()) 
22                 { 
23                     ret.AppendFormat("{0:X2}", b); 
24                 } 
25                 ret.ToString(); 
26                 return ret.ToString(); 
27             } 
28             catch 
29             { 
30                 return null; 
31             } 
32         } 

ASP.NET web.config中,数据库连接字符串的加密与解密。

<?xml version="1.0"?><configuration>    <system.web>      <compilation debug="true" targetFramework="4.0" />    </system.web>    <connectionStrings>      <add name="MyNwConnectionString" connectionString="Server=myServerAddress;Database=myDataBase;User Id=myUsername; Password=myPassword;"/>    </connectionStrings>    <appSettings>      <add key="User" value="myUsername"/>      <add key="Password" value="myPassword"/>    </appSettings></configuration>

using System;using System.Configuration;namespace WebConfigEncryptTest{    public partial class WebForm1 : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            string user = ConfigurationManager.AppSettings.Get("User");            string password = ConfigurationManager.AppSettings.Get("Password");            string connectionString = ConfigurationManager.ConnectionStrings["MyNwConnectionString"].ConnectionString;        }    }}

  在本文中,大家将切磋哪些以编制程序方式加密和平解决密该配置安装有个别,并且深入分析一下命令行程序aspnet_regiis.exe的应用。然后,大家将评估ASP.NET 2.0提供的加密选项。别的,还可能会简短地琢磨一下怎么样加密ASP.NET版本1.x中的配置消息。

    -pdf 和-pef 参数是对点名的物理目录里的Web.config文件进行加密,大家可以先将App.config文件改名字为Web.config,通过那四个参数便能够“骗”过系统,让它将点名的配置节进行加密,大家只须求将加密后的文书名改回App.config就能够,大家来试验一下:

DES加密,密钥为8位字符

发端--->运维,输入cmd,接着输入以下内容

加密文件可以运用的Provider

.NET为我们提供了一个工具aspnet_regiis.exe来对web.config文件中的敏感音讯举行加密(app.config文件能够先改名称为web.config,加密后再改回app.config)。你能够运用三个provider中的二个来展开加密:

  • System.Configuration.DPAPIProtectedConfigurationProvider:在System.Configuration.dll中,使用Windows DPAPI(Data Protection API)来开始展览加密,密钥存在Windows Local Security Authority中。注意:当使用DPAPIProtectedConfigurationProvider时,加密文书所采纳的帐号供给与运营web application的帐号一样,不然web application不能解密加密的情节。
  • System.Configuration.WranglerSAProtectedConfigurationProvider:在System.Configuration.dll中,使用普拉多SA算法来张开加密(SportageSA算法是非对称加密,参见《对称加密与非对称加密 》),公钥寄放在config文件个中,独有加密的Computer有密钥。CR-VSAProtectedConfigurationProvider平常是私下认可的缺省provider。

  二、 前提

    第一步:先将引得下的App.config改名字为Web.config。

澳门新萄京官方网站 3澳门新萄京官方网站 4

加密:

加密文书的通令

加密web.config文件能够选用:

aspnet_regiis -pef section web-app-physical-dir

Encrypt the configuration section. Optional arguments:

[-prov provider] Use this provider to encrypt.

比方运营上边包车型大巴命令就能够独家对connectionStrings和appSettings中的音讯进行加密:

aspnet_regiis.exe -pef "connectionStrings" "C:mywebHelloService"

aspnet_regiis.exe -pef "appSettings" "C:mywebHelloService"

澳门新萄京官方网站 5

加密后的web.config文件变成:

<?xml version="1.0"?><configuration>    <system.web>      <compilation targetFramework="4.0" />    </system.web>    <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>E2fO9C0TJVxImLYQZza fCQdDbTpNh/kOKLRsK6zcFjkgtUCl6SnMViuu/2G1NVTxqXyEWYwyK6AiCZA feeG/AvYvmEEVopVDb0YyGeuJgEI1r8HxTl8Cv f2EIimP7LJI JRZVerI4MU6Ke3wxm2S/ATc73/W6eg9808f4/D6J0pp3wND4E79gBiAnBHFYQIefdJYUsmHR9z9LiIqjCllkkj/JB0kso0kGJ9i iew1Jae5jugIN8gPxsXbCfmw6ru3I3Kbpa8Z5AllfkFA2YKrsuV3c7eLLJ0kB4lsIJIUTy3kRyA4GjdChOmlNwwffIbhwUPPxa25CiF0VAq27Q==</CipherValue>                    </CipherData>                </EncryptedKey>            </KeyInfo>            <CipherData>                <CipherValue>I1DWG11Iz/rq NC9C/21B3Q22J9 IexHPH6kkWvQPeHUO6OvOWeQbk3wHALR2ql8pz0gQJFyfTypMk/xSSikFI2Dcy5mgYY3kP73bQQ83ho3O1HPw9TsRtK1G8gmVNGyQLj7iTRcoGfiYYmSibPynv1MzSV1qDXlnVfKiMqKRZ5ZPiMSMc5u3dDEL/JW1oCvAGs5tHrZU5 vgvm0yCmSuCWZbXva iv9J35EQqs58pq hwVo1hg1dffdupGCBykaXGl5VX3TIGc=</CipherValue>            </CipherData>        </EncryptedData>    </connectionStrings>    <appSettings 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>WVoFIs8rSEgqKw1C0QCmePs7WK6EIoGCfdx9CTJNmABoVvoEWPnOEQwz/6Ruu0rGwa7q91KuhGILmy4NEN0padnX6FScCdEzP6CS59U3IFumYmTrD7D9ihqFO2aIL/SuBvV3D2kxhHaYGFaPuvYgsyOLf3 aYR3O/uh/k5wZxLoIeKUUrT762J3bdaK6cJWQeuOu4j2vDXEdawdwhlnK12UV8 /AXZNlFW1N3Z0RUVFX1nMSwTaIu8F3tZ9hCFbGwbTm2T0XnfDOcB6dCxCutqC8pXD36laAfiSANzAWoC Yhf5eFSj24fX0NU6UTQB8fqLyOgWsIMLxZLKVrwnlmg==</CipherValue>                    </CipherData>                </EncryptedKey>            </KeyInfo>            <CipherData>                <CipherValue>5W2KhG/oETLUDptobcOM52x1qD/g9A0By/wcGXI fm7EdcD8mT3TxsLVBVcHRBCyUO7OIHl8NyCrduRSYwyd8ggBCriQ5KrbAmW4LXrNnw/JjjCEJWPuRcRucVRfpgap2nHh6BXRXC/AU6v0GcRqy7LV8179PgGtyAa8IE1mV/w=</CipherValue>            </CipherData>        </EncryptedData>    </appSettings></configuration>

TiggoSAProtectedConfigurationProvider是暗许的缺省provider,要是想利用DPAPIProtectedConfigurationProvider,能够用-prov参数指明:

aspnet_regiis.exe -pef "connectionStrings" "C:mywebHelloService" -prov "DataProtectionConfigurationProvider"

aspnet_regiis.exe -pef "appSettings" "C:mywebHelloService" -prov "DataProtectionConfigurationProvider"

加密安顿文件后,源程序无需做任何改动。假如要修改或增加新的配置音讯,需求先解密配置文件。不论选择哪类Provider,都不得不在开始展览加密的微型Computer上对配备文件举办解密。

  在大家初步索求怎么着加密ASP.NET 2.0配备音讯在此之前,请牢记下列几点:

    第二步:张开SDK命令提醒,输入指令:aspnet_regiis -pef "配置节" "目录",以本身的种类为例,加密前的config文件内容如下:

 1 /// <summary> 
 2         /// DES解密,密钥为8为字符 
 3         /// </summary> 
 4         /// <param name="strDecrypt">需要加密的字符串</param> 
 5         /// <param name="strKey">8位的密钥</param> 
 6         /// <returns></returns> 
 7         public string DesDecrypt(string strDecrypt, string strKey) 
 8         { 
 9             if (string.IsNullOrEmpty(strDecrypt)) return null; 
10             try 
11             { 
12                 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
13                 byte[] inputByteArray = new byte[strDecrypt.Length / 2]; 
14                 for (int x = 0; x < strDecrypt.Length / 2; x  ) 
15                 { 
16                     int i = (Convert.ToInt32(strDecrypt.Substring(x * 2, 2), 16)); 
17                     inputByteArray[x] = (byte)i; 
18                 } 
19                 des.Key = ASCIIEncoding.ASCII.GetBytes(strKey); 
20                 des.IV = ASCIIEncoding.ASCII.GetBytes(strKey); 
21                 MemoryStream ms = new MemoryStream(); 
22                 CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); 
23                 cs.Write(inputByteArray, 0, inputByteArray.Length); 
24                 cs.FlushFinalBlock(); 
25                 return System.Text.Encoding.Default.GetString(ms.ToArray()); 
26             } 
27             catch 
28             { 
29                 return null; 
30             } 
31         } 

C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_regiis.exe -pef "connectionStrings" "你的Web项目路径"

解密文件的下令

解密的指令如下(解密命令无需-prov参数):

-pdf section web-app-physical-dir

Decrypt the configuration section.

aspnet_regiis.exe -pdf "connectionStrings" "C:mywebHelloService"

aspnet_regiis.exe -pdf "appSettings" "C:mywebHelloService"

澳门新萄京官方网站 6

  1. 富有情势的加密都会蕴藏某种秘密,而当加密和平化解密数据时都要运用这一私人民居房。对称加密算法在加密和解密二个消息时采取同一把密钥,而非对称加密算法对于加密和解密却使用分裂的密钥。无论接纳哪个种类本事,最要紧的要么看解密密钥的普洱保存程度。

 1澳门新萄京官方网站 7<?xml version="1.0" encoding="utf-8"?>
 2澳门新萄京官方网站 8<configuration>
 3澳门新萄京官方网站 9  <configSections>
 4澳门新萄京官方网站 10    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
 5澳门新萄京官方网站 11  </configSections>
 6澳门新萄京官方网站 12  <dataConfiguration defaultDatabase="Connection String" />
 7澳门新萄京官方网站 13  <connectionStrings>
 8澳门新萄京官方网站 14    <add name="Connection String" connectionString="Database=LocomotiveStat;Server=10.167.61.49;User ID=sa;Password=sa;"
 9澳门新萄京官方网站 15      providerName="System.Data.SqlClient" />
10澳门新萄京官方网站 16  </connectionStrings>
11澳门新萄京官方网站 17</configuration>

DES解密,密钥为8为字符

解密:

总结

布局文件中平常会有用户名密码的灵敏音信,为了防卫该音信走漏,须求对配置文件进行加密。加密与解密能够使用.NET提供的工具aspnet_regiis.exe,能够在Windows .NET的文书夹中找到它。

该工具只对web.config文件进行改造,假诺要加密或解密app.config,能够先将app.config文件改名字为web.config,加密或解密后再改回来。

  2. ASP.NET 2.0提供的安插加密本事的布署性意在,力图阻止能够以某种格局检索你的布局文件的红客的侵略。其落到实处观念是,假如在黑客的计算机上有你的Web.config文件;那么,他不能够破解该加密的有的。然则,当web服务器上的三个ASP.NET页面从二个加密的陈设文件诉求新闻时,该数量必须被解密技巧选拔(况且那时不须要您编写任何代码)。由此,要是三个红客能够把三个可见查询配置文件并展现它的结果的ASP.NET web页面上传来你的系统,那么,他就可见以一般文书方式看看被加密的安装。(详细意况请参见本文提供的示例ASP.NET页面,它显得了加密和解密Web.config文件中各部分的不二等秘书诀;如你所见,一个ASP.NET页面能够存取(并展现)该加密数据的一般性文书方式)

    输入指令:aspnet_regiis -pef "connectionStrings" "E:支出目录",加密后的config文件内容如下:

关于DES加解密的密匙的收获,一般是内部职员掌握控制,可访谈服务器获取,安全上更有保障。

C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_regiis.exe -pdf "connectionStrings" "你的Web项目路线"

  3. 加密和平消除密配置音信要求提交一定的性质代价。因而,常常是仅加密包蕴敏感新闻的安插部分。比如说,大概无需加密<compilation>或<authorization>配置部分。

 1澳门新萄京官方网站 18<?xml version="1.0" encoding="utf-8"?>
 2澳门新萄京官方网站 19<configuration>
 3澳门新萄京官方网站 20  <configSections>
 4澳门新萄京官方网站 21    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
 5澳门新萄京官方网站 22  </configSections>
 6澳门新萄京官方网站 23  <dataConfiguration defaultDatabase="Connection String" />
 7澳门新萄京官方网站 24  <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
 8澳门新萄京官方网站 25    <EncryptedData Type=""
 9澳门新萄京官方网站 26      xmlns=";
10澳门新萄京官方网站 27      <EncryptionMethod Algorithm="" />
11澳门新萄京官方网站 28      <KeyInfo xmlns=";
12澳门新萄京官方网站 29        <EncryptedKey xmlns=";
13澳门新萄京官方网站 30          <EncryptionMethod Algorithm="" />
14澳门新萄京官方网站 31          <KeyInfo xmlns=";
15澳门新萄京官方网站 32            <KeyName>Rsa Key</KeyName>
16澳门新萄京官方网站 33          </KeyInfo>
17澳门新萄京官方网站 34          <CipherData>
18澳门新萄京官方网站 35            <CipherValue>g2QFQqbHU1L6WUPYqjADqFAvHcdq/7dqCd1U9GlQFEi/nHDVHjqsWvjNywOZtQQg7Q/yW7g8xlRCo0h2 yYd/tQTNoVMu/RKdJmSjZMnmnwpWq S2VEWK4U106JQwLCfBR/bAF4DHvG47B9KB0JbRfXBt5V2wJVaAI9u3kzuj50=</CipherValue>
19澳门新萄京官方网站 36          </CipherData>
20澳门新萄京官方网站 37        </EncryptedKey>
21澳门新萄京官方网站 38      </KeyInfo>
22澳门新萄京官方网站 39      <CipherData>
23澳门新萄京官方网站 40        <CipherValue>blwV/ZW1izFZL80YL5RkcjrIjWkQ0L1gJhgZbxEzzTgOcT24ihrAnv3/rDCG WIZ7TL5D/rMm7dQwkIsij1Sh3befg6F3 pxcW4oe1w/bovIKuzjs3tokUpBvTTj fsCs2W/MWUhQaWMKQWkHfS2Ajt6gL6MTYtb3pfQUp0pdHbeRxoqdiAksQ1Zzsi1FtRTi7gTT7hnpF0pJs W9mxTVDMO/qSZXfXLOEMIs/A5ExcfvR5GjpaPuDeLuSsCN3XtjaiXzaDQ3It7j r66 L2C0xvEhbT9SsG</CipherValue>
24澳门新萄京官方网站 41      </CipherData>
25澳门新萄京官方网站 42    </EncryptedData>
26澳门新萄京官方网站 43  </connectionStrings>
27澳门新萄京官方网站 44</configuration>

那么有了上边加密后的一群数据,怎么着转移对应配置文件中的有些配置节上的多少,微软提供System.Configuration.dll组件来操作App.Config配置文件等数据将其管理,如:

.NET为版本的路线自行修改,在那之中connectionStrings连接字符串的称呼。(版本和和煦的配备相关联)
connectionStrings>
<add name="Conn" connectionString="server=. ;database=UserDB;integrated security=sspi" />
</connectionStrings>

  三、 加密何种新闻

    综上可得,大家曾经做到了职分,未来只需求将Web.config文件名改回App.config即可,在应用程序项目中不供给对该公文进行解密操作,.NET框架会自行替大家做到,假使想解密该公文也很轻巧,在SDK命令提醒里输入aspnet_regiis -pdf "配置节" "目录"即可。

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["配置节"].Value = strDesEncrypt;//DES加密后的数据
config.Save();

1.在Dos命令窗口中推行命令:

  在大家剖析哪些加密ASP.NET 2.0布局音信前,让大家首先来看一下可见加密什么安插音信。使用.NET框架2.0提供的库,开荒职员能够加密在Web.config或machine.config文件中的绝大许多的配备部分。那么些布置部分是一些用作<configuration>或<system.web>成分子结点的XML成分。比如,下边包车型大巴亲自去做Web.config文件中隐含五个布局安装,显式地定义为:

 劣点:安全性低,局限于非Computer操小编,对于多个作业繁琐的种类不符合实际。

C:Documents and SettingsAdministrator>C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_regiis -pef "connectionStrings" "E:sjzbWebSite1"
2.命令成功实现未来会在C:Documents and SettingsAll UsersApplication DataMicrosoftCryptoRSAMachineKeys 中生成叁个密钥文件.该文件在不一样的机器上是不相同样的.在该公文上点右键,选属性,在安全属性页上,将NETWO君越K_SEEscortVICE组增多进去,给读取权限.

<connectionStrings>,<compilation>和<authentication>。
<?xml version="1.0"?>
<configuration xmlns="
<connectionStrings>
 <add name="MembershipConnectionString" connectionString="connectionString"/>
</connectionStrings>
<system.web>
 <compilation debug="true"/>
 <authentication mode="Forms" />
</system.web>
  这一个节中的每三个都得以有采取地被加密,恐怕经过编制程序格局或透过aspnet_regiis.exe(四个命令行工具)实现。当被加密时,加密后的文书直接存款和储蓄在布置文件中。举例,即便大家要加密上边的<connectionStrings>节,那么结果Web.config文件大概看起来如下所示:(注意:篇幅所限,大家简要了一大块<CipherValue>)

   提供参谋网站:

3.如若老是字符串中的用户名和口令须要修改,则用上面包车型客车一声令下将webconfig文件解密.然后再度上面包车型客车加密步骤就能够

<?xml version="1.0"?>
<configuration xmlns="
<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
 <CipherData>
  <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl sBAAAAed...GicAlQ==</CipherValue>
 </CipherData>
</EncryptedData>
</connectionStrings>
<system.web>
 <compilation debug="true"/>
 <authentication mode="Forms" />
</system.web>
  其它,存在一些你不可能采取那一个工夫加密的配置部分:

  (2) 暗中认可情状下,我们要求对App.config文件里的connectionStrings或任何安顿节片断实行加密管理,ASP.NET IIS 注册工具 (Aspnet_regiis.exe)能够胜任这几个工作,但以此工具只好针对ASP.NET的Web.config文件,难道我们就从未主意了呢?答案自然是还是不是定的。

C:Documents and SettingsAdministrator>C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_regiis -pdf "connectionStrings" "E:sjzbWebSite1"

  · <processModel>
  · <runtime>
  · <mscorlib>
  · <startup>
  · <system.runtime.remoting>
  · <configProtectedData>
  · <satelliteassemblies>
澳门新萄京官方网站:config数据库连接字符串加密,VS开发程序用户防范安全问题。  · <cryptographySettings>
  · <cryptoNameMapping>
  · <cryptoClasses>

  配置选项:

本文来源CSDN博客,转发请标注出处:

  为了加密那个布署部分,你必须加密这么些值并把它存款和储蓄在注册表中。存在多个aspnet_setreg.exe命令行工具得以协理你完成这一历程;大家就要本文前面钻探那个工具。

-pdf section webApplicationDirectory 对点名物理(非设想)目录中的 Web.config 文件的钦定配置节进行解密。

在代码中验证是或不是早就j加密:

  【提示】Web.Config和Machine.Config之区别:

-pef section webApplicationDirectory 对点名物理(非虚构)目录中的 Web.config 文件的内定配置节举办加密。

Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);

  Web.config文件钦命针对一个一定的web应用程序的配置安装,何况位居应用程序的根目录下;而machine.config文件钦点全体的放在该web服务器上的站点的安顿安装,并且位居$WINDOWSDI福特Explorer$Microsoft.NetFrameworkVersionCONFIG目录下。

-pdf 和-pef 参数是对点名的情理目录里的Web.config文件举办加密,大家得以先将App.config文件改名字为Web.config,通过那三个参数便足以“骗”过系统,让它将钦定的配置节  举行加密,大家只须要将加密后的文件名改回App.config就能够,我们来尝试一下:

ConfigurationSection configSection = config.GetSection("connectionStrings");

  四、加密挑选

 第一步:先将引得下的App.config改名字为Web.config。

if (configSection.SectionInformation.IsProtected)

  开辟职员能够利用ASP.NET 2.0提供程序模型来维护配置节消息,那允许别的落成都得以被无缝地插入到该API中。.NET框架2.0中提供了八个放置的提供程序用于保障配置节新闻:

 第二步:打开SDK命令提醒,输入指令:aspnet_regiis -pef "配置节" "目录",以自家的门类为例,加密前的config文件内容如下:

...{//若是已经加密,就无须再加密了

  · Windows数据珍视API(DPAPI)提供程序(DataProtectionConfigurationProvider):这一个提供程序行使Windows内置的密码学才能来加解密配置节。暗许意况下,这几个提供程序行使本机的密钥。你还是可以够够利用用户密钥,不过那供给开始展览一些定制。

  

configSection.SectionInformation.UnprotectSection();

  · RAV4SA爱慕的布局提供程序(奥德赛SAProtectedConfigurationProvider):使用KoleosSA公钥加密来加解密配置节。使用那个提供程序,你须求创设存款和储蓄用于加解密配置音信的公钥和私钥的密钥容器。你能够在三个多服务器地方下选用EnclaveSA,那只要成立可输出的密钥容器就能够。
理之当然,假设要求的话,你仍可以够创建和煦的维护装置提供程序。

1<?xml version="1.0" encoding="utf-8"?>
 2<configuration>
 3  <configSections>
 4    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
 5  </configSections>
 6  <dataConfiguration defaultDatabase="Connection String" />
 7  <connectionStrings>
 8    <add name="Connection String" connectionString="Database=LocomotiveStat;Server=10.167.61.49;User ID=sa;Password=sa;"
 9      providerName="System.Data.SqlClient" />
10  </connectionStrings>
11</configuration>

config.Save();

  在本文中,我们仅切磋使用DPAPI提供程序选取机器级密钥。到最近结束,那是最简易的不二诀要,因为它不央浼创设任何密钥或密钥容器。当然,其衰颓的单方面在于:八个加密的安顿文件仅能够用于首先落实加密的web服务器上;何况,使用机器密钥将允许加密的文件能够被web服务器上的任何网址所解密。

输入指令:aspnet_regiis -pef "你要加密的【配置节】" "你要加密的【目录】",加密后的config文件内容如下:

}

  五、以编制程序情势加密配置部分

1<?xml version="1.0" encoding="utf-8"?>
 2<configuration>
 3  <configSections>
 4    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
 5  </configSections>
 6  <dataConfiguration defaultDatabase="Connection String" />
 7  <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
 8    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
 9      xmlns="http://www.w3.org/2001/04/xmlenc#">
10      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
11      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
12        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
13          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
14          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
15            <KeyName>Rsa Key</KeyName>
16          </KeyInfo>
17          <CipherData>
18            
<CipherValue>g2QFQqbHU1L6WUPYqjADqFAvHcdq/7dqCd1U9GlQFEi/nHDVHjqsWvjNywOZtQQg7Q/yW7g8xlRCo0h2 yYd/tQTNoVMu/RKdJmSjZMnmnwpWq S2VEWK4U106JQwLCfBR/bAF4DHvG47B9KB0JbRfXBt5V2wJVaAI9u3kzuj50=</CipherValue>
19          </CipherData>
20        </EncryptedKey>
21      </KeyInfo>
22      <CipherData>
23        
<CipherValue>blwV/ZW1izFZL80YL5RkcjrIjWkQ0L1gJhgZbxEzzTgOcT24ihrAnv3/rDCG WIZ7TL5D/rMm7dQwkIsij1Sh3befg6F3 pxcW4oe1w/bovIKuzjs3tokUpBvTTj fsCs2W/MWUhQaWMKQWkHfS2Ajt6gL6MTYtb3pfQUp0pdHbeRxoqdiAksQ1Zzsi1FtRTi7gTT7hnpF0pJs W9mxTVDMO/qSZXfXLOEMIs/A5ExcfvR5GjpaPuDeLuSsCN3XtjaiXzaDQ3It7j r66 L2C0xvEhbT9SsG</CipherValue>
24      </CipherData>
25    </EncryptedData>
26  </connectionStrings>
27</configuration>

else

  System.Configuration.SectionInformation类对三个配置节的陈说举行了抽象。为了加密二个配置节,只须要轻松地使用SectionInformation类的ProtectSection(提供程序)方法,传递您想利用的提供程序的名字来实行加密。为了存取你的应用程序的Web.config文件中的二个一定的配置节,你能够选拔WebConfigurationManager类(在System.Web.Configuration命名空间中)来引用你的Web.config文件,然后采纳它的GetSection(sectionName)方法重回贰个ConfigurationSection实例。最终,你能够经过ConfigurationSection实例的SectionInformation属性获得一个SectionInformation对象。

  本人也不论找了个布局文件式下了,成功了。

...{

  上边,大家因而一个简约的代码示例来表明难点:

澳门新萄京官方网站 45

configSection.SectionInformation.ProtectSection ("DataProtectionConfigurationProvider");

privatevoid ProtectSection(string sectionName, string provider)
{
 Configuration config = WebConfigurationManager.
 OpenWebConfiguration(Request.ApplicationPath);
 ConfigurationSection section = config.GetSection(sectionName);
 if (section != null &&!section.SectionInformation.IsProtected)
 {
  section.SectionInformation.ProtectSection(provider);
  config.Save();
 }
}
private void UnProtectSection(string sectionName) {
 Configuration config =WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
 ConfigurationSection section = config.GetSectio n(sectionName);
 if (section != null && section.SectionInformation.IsProtected)
 {
  section.SectionInformation.UnprotectSection();
  config.Save();
 }
  你能够从一个ASP.NET页面中调用那些ProtectSection(sectionName,provider)方法,其相应的参数是八个节名(如connectionStrings)和三个提供程序(如DataProtectionConfigurationProvider),何况它开拓Web.config文件,援用该节,调用SectionInformation对象的ProtectSection(provider)方法,最后保存配置变化。

 

config.Save();

  另一方面,UnProtectSection(provider)方法实现解密一个特定的配置节。在此,仅必要传入要解密的节-大家不需求费心提供程序,因为该音讯已经储存在伴随encrypted节的符号中(也等于,在地点的演示中的<connectionStrings>节,在被加密未来,它富含了提供程序:<connectionStringsconfigProtectionProvider="DataProtectionConfigurationProvider">)。

 澳门新萄京官方网站 46

}

  记住,一旦该多少被加密,当从二个ASP.NET页面读取它时(也正是,从三个SqlDataSource控件或以编制程序方式经过ConfigurationManager.ConnectionStrings[connStringName].ConnectionString读取该连接字符串消息),ASP.NET会活动地解密该连接字符串並且再次来到普通文本值。换句话说,在落到实处加密后,你或多或少无需改换您的代码。优异酷,对不对?

一言以蔽之,大家曾经到位了职务,以往只供给将App.config文件名改回Web.config就可以,在应用程序项目中没有要求对该公文进行解密操作,.NET框架会自动替我们完结,借使想解密该公文也很简短,在SDK命令提醒里输入aspnet_regiis -pdf "配置节" "目录"即可。

 

  从本文下载的示例ASP.NET 2.0网址中,你会意识有贰个演示页面,它显得了该站点的Web.config文件,当中有一个多行TextBox,还提供了相应的Web控件开关用于加密配置文件的逐个部分。那么些示例中也使用了上面已经研究过的ProtectSection()和UnProtectSection()方法。

  参照他事他说加以考察网站如:

加密后解密出现找不到迷失错误!

澳门新萄京官方网站:config数据库连接字符串加密,VS开发程序用户防范安全问题。  六、 使用命令行工具aspnet_regiis.exe

  希望本篇小说对大家有必然的帮忙,以上有不足之处,或有别的更客观的艺术请留言赐教。

大家只要想对web.config的数据库连接字符串举办加密的话,那么这里提供了五个方法。

  你还是可以够够利用aspnet_regiis.exe命令行工具来加密和平化解密Web.config文件配置部分,你能够在"%WINDOWSDIPAJERO%Microsoft.NetFrameworkversion"目录下找到那几个工具。为了加密Web.config文件中的八个节,你可以在那几个命令行工具中央银行使DPAPI机器密钥,如下所示:

  A young ilder ~ An old baggar !

方法一、
  使用“DataProtectionConfigurationProvider”情势加密,创制test.aspx文件,代码如下:
 供给丰盛援用
 using System.Web.Configuration;
 using System.IO;

  加密二个特定网址的Web.config文件的通用方式:

 //加密
 protected void Button1_Click(object sender, EventArgs e)
  {
  Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
  ConfigurationSection section = config.GetSection("connectionStrings");
   
  if (section != null && !section.SectionInformation.IsProtected)
  {
  section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
  config.Save();
  }

aspnet_regiis.exe -pef section physical_directory -prov provider
  或:

  }
 //解密
  protected void Button2_Click(object sender, EventArgs e)
  {
  Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
  ConfigurationSection section = config.GetSection("connectionStrings");

aspnet_regiis.exe -pe section -app virtual_directory -prov provider
  加密贰个一定网址的Web.config文件的现实性实例:

  if (section != null && section.SectionInformation.IsProtected)
  {
  section.SectionInformation.UnprotectSection();
  config.Save();
  }
  }

aspnet_regiis.exe -pef "connectionStrings" "C:InetpubwwwrootMySite" -prov "DataProtectionConfigurationProvider"
  或:

计算:此方法很方便,何况很轻便,但安全性未有密钥加密高。

aspnet_regiis.exe -pe "connectionStrings" -app "/MySite" -prov "DataProtectionConfigurationProvider"
  解密二个特定网址的Web.config文件的通用情势:

方法二、
 使用“RubiconSAProtectedConfigurationProvider”情势来加密
 test.aspx程序文件宗旨如上,
 把
 section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
 改成
 section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
 但那个时候你拜见网址的时候很有十分的大可能率会冒出

aspnet_regiis.exe -pdf section physical_directory
  或:

 表达: 在拍卖向该央求提供服务所需的布局文件时出错。请检查上边包车型客车特定错误详细音信并适度地修改配置文件。 
 分析器错误音讯: 未能动用提供程序“奥迪Q3saProtectedConfigurationProvider”进行解密。提供程序重返错误新闻为: 打不开 ENCORESA 密钥容器。
 
 这样的失实,化解格局是:
 进dos运行:aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITYNETWORK SERVICE"
  假若运营出错,供给把目录 C:WINDOWSMicrosoft.NETFrameworkv2.0.50727 放入情况变量path中。
  此时就能够成功访谈网址了。
  一样能够通过命令行来促成“奇骏SAProtectedConfigurationProvider”加密
  
  注意:你也足以不运转 aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITYNETWOENVISIONK SE科雷傲VICE"命令来注册暗许的 WranglersaProtectedConfigurationProvider 的SportageSA 密钥容器
  方法如下:
  1)创立三个可导出的rsa密钥容器,命名字为Key

aspnet_regiis.exe -pd section -app virtual_directory 
  解密二个一定网址的Web.config文件的具体实例:

aspnet_regiis -pc "Key" -exp

aspnet_regiis.exe -pdf "connectionStrings" "C:InetpubwwwrootMySite"
  或:

2)在您要加密的音信前面钦点密钥容器,如:

  你仍可以够够钦赐由aspnet_regiis.exe来进行machine.config文件的加密/解密。

<configProtectedData> 

  【提示】 加密ASP.NET版本1.x中的配置安装

  <providers> 

  为了爱慕ASP.NET版本1.x中的配置安装,开荒者供给加密并把敏感的安装存款和储蓄在web服务器的注册表中,并以一种"强"键格局存储。配置文件中不是积存加密的内容(如ASP.NET 2.0那样),而只是富含三个到存款和储蓄该加密值的注册表键的援用。比如:

  <clear /> 

<identity impersonate="true"
userName="registry:HKLMSOFTWAREMY_SECURE_APPidentityASPNET_SETREG,userName"
password="registry:HKLM澳门新萄京官方网站,SOFTWAREMY_SECURE_APPidentityASPNET_SETREG,password" />
  微软为开采人士提供了aspnet_setreg.exe命令行工具,用于加密敏感的配置消息同不日常间把它移动到多少个"强"注册表入口处。可惜的是,这一个工具仅针对一定的布署安装职业;相比较之下,ASP.NET 2.0允许加密任何配置节。

  <add name="KeyProvider" 

  有关于在二个ASP.NET 1.x应用程序中利用aspnet_setreg.exe的愈来愈多音讯请仿照效法MSDN中的KB#32990。缺憾的是,那些命令行程序仅能加密配置安装中的预约义的节,何况不允许你加密你本人加上的数据库连接字符串和别的敏感音讯。

      type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 

  七、 结论

      keyContainerName="Key" 

  在本文中,大家学习了哪些运用ASP.NET 2.0提供的不等的加密选项来保卫安全配置节新闻,还研商了怎么样选拔编制程序本事和aspnet_regiis.exe来分别加密Web.config中的配置节。珍贵你的灵巧的配置安装有利于确定保障您的站点更难于被黑客攻击-通过使其更吃力发掘敏感的安顿安装。方今,ASP.NET 2.0已经提供了相对轻巧的加密和平化解密本领,开荒者毫无理由不应用这种办法来保障你的敏锐性的安顿安装。

      useMachineContainer="true"/> 

  </providers> 

</configProtectedData> 

<connectionStrings> 

  <add name="SQLConnString" connectionString="Data Source=yourIP;Initial Catalog=test;User Id=yourID;Password=yourPassword;" 

  providerName="System.Data.SqlClient" /> 

</connectionStrings>

同一时间有限支撑在configuration节的xmlns属性有如下值:

<configuration xmlns=";

3)对计划文件举行加密

aspnet_regiis -pef "connectionStrings" "E:projectTest" -prov "KeyProvider"

参数分别为:必要加密的配置节、项目所在目录的物理路线、加密所选用的密钥容器名称

再看web.config文件,就能意识connectionStrings节已经被加密了,但是运营程序会发觉先后依然能够准确访谈数据库。

此刻,只需运营:

aspnet_regiis -pdf "connectionStrings" "E:projectTest"

就足以对web.config文件进行解密。

(注意,假诺依然有错误,那大概是你没有给生成的密匙文件丰裕的权限,去到 C:Documents and SettingsAll UsersApplication DataMicrosoftCryptoRSAMachineKeys 目录下,
  找到刚生成的密匙文件,把network service用户的读取权限赋予给它,就足以了,直接用命令的话也得以:命令如下 aspnet_regiis -pa "Key" "NT AUTHORITYNETWOEvoqueK SEKoleosVICE" ,恐怕须求重新启航iis)

4)把密钥容器导出为xml文件

aspnet_regiis -px "Key" "e:Key.xml"

以此命令只导出公钥,由此现在只可以用来加密,而望尘不及解密。

aspnet_regiis -px "Key" "e:Keys.xml" -pri

以此则连私钥一同导出了,所以我们要用这几个。

5)把密钥容器删除

aspnet_regiis -pz "Key"

删除后再运行程序,会提醒出错:

深入分析器错误音信: 未能动用提供程序“KeyProvider”举办解密。提供程序再次回到错误消息为: 打不开 凯雷德SA 密钥容器。

同理能够作证,在任何一台未安装正确的密钥容器Key的机械上,程序都爱莫能助对connectionStrings节实行解密,因而也就不能平常运作。

6)导入key.xml文件

aspnet_regiis -pi "Key" "e:Keys.xml"

那时,再运营程序会发觉又可以解密了。表明加密与解密机制运作如常。

最后说一下这几个机制所提供的安全性保证能够采取在如哪个地方方:

对winform程序的app.config举办加密实际意义并十分小,因为无论怎么样,客户机都能够通过运维aspnet_regiis -pdf 来对配备文件实行解密,进而揭示敏感音讯。

对此web.config进行加密的意义也只限于,当web.config文件非常的大心走漏时,不会同不时间败露敏感音信,如若恶意攻击者已经获得了在服务器上运维程序的权位,那么同app.config同样,可以很轻巧通过通过运转aspnet_regiis -pdf 获取明文了。

还有,通过aspnet_regiis -pa "Key" "NT AUTHORITYNETWOLANDK SE途胜VICE"调整对两样用户对密钥容器的拜望权限,应该仍是能够越发取得一些安全性,举例能够调节某个用户便是登陆到服务器上,也心有余而力不足用aspnet_regiis -pdf对配置文件实行解密。

引用地址:

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站:config数据库连接字符串加

关键词: