web.config本地加密解密BAT头条 - 威尼斯人

web.config本地加密解密BAT头条

2019-02-08 08:31:47 | 作者: 芷卉 | 标签: 加密,解密,文件 | 浏览: 1134

翻开.Net Framework顺便的SDK指令提示符。
  加密指令:
  aspnet_regiis -pe “connectionStrings” -app “/encrypttest”
  -pe开关用来指定web.config中需求加密的节(Web.Config文件中的connectionStrings装备节)。
  -app开关用来指定IIS里边的虚拟目录,假如为根目录网站,为”/”.
  解密指令:
  aspnet_regiis -pd “connectionStrings” -app “/encrypttest”
  仅有的差异就是,咱们用-pd开关替代了-pe开关。
  1、加密EncryptWebConfig.bat
  @echo off
  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef “connectionStrings” “D:\Program Files\Microsoft.NET\ Pet Shop 4.0Web”
  PAUSE
  2、解密DecryptWebConfig.bat
  @echo off
  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf “connectionStrings” “D:\Program Files\Microsoft.NET\ Pet Shop 4.0Web”
  PAUSE
  解决办法是:
  进dos运转:
  aspnet_regiis -pa “NetFrameworkConfigurationKey” “NT AUTHORITY\NETWORK SERVICE”
  假如运转犯错,需求把目录 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 放入环境变量path中。
  此刻就能够成功拜访网站了。
  相同能够经过指令行来完成“RSAProtectedConfigurationProvider”加密
  现在把找到文件附在下面:
  咱们假如想对web.config的数据库衔接字符串进行加密的话,那么这儿供给了两个办法。
  办法一、
  运用“DataProtectionConfigurationProvider”方式加密,创立tmdsb.aspx文件,代码如下:
  需求增加引证
  using System.Web.Configuration;
  using System.IO;
  //加密
  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();
  }
  }
  //解密
  protected void Button2_Click(object sender, EventArgs e)
  {
  Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
  ConfigurationSection section = config.GetSection(“connectionStrings”);
  if (section != null && section.SectionInformation.IsProtected)
  {
  section.SectionInformation.UnprotectSection();
  config.Save();
  }
  }
  总结:此办法很便利,而且很简单,但安全性没有密钥加密高。
  办法二、
  运用“RSAProtectedConfigurationProvider”方式来加密
  test.aspx程序文件根本如上,
  把
  section.SectionInformation.ProtectSection(“DataProtectionConfigurationProvider”);
  改成
  section.SectionInformation.ProtectSection(“RSAProtectedConfigurationProvider”);
  但这个时分你拜访网站的时分很有或许会呈现
  阐明:
  在处理向该恳求供给效劳所需的装备文件时犯错。请查看下面的特定过错详细信息并适当地修正装备文件。
  分析器过错信息: 未能运用供给程序“RsaProtectedConfigurationProvider”进行解密。
  供给程序回来过错信息为: 打不开 RSA 密钥容器。
  这样的过错,解决办法是:
  进dos运转:aspnet_regiis -pa “NetFrameworkConfigurationKey”
  “NT AUTHORITY\NETWORK SERVICE”
  假如运转犯错,需求把目录 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
  放入环境变量path中。此刻就能够成功拜访网站了。
  相同能够经过指令行来完成“RSAProtectedConfigurationProvider”加密
  留意:你也能够不运转 aspnet_regiis -pa “NetFrameworkConfigurationKey”
  “NT AUTHORITY\NETWORK SERVICE”指令来注册默许的
  RsaProtectedConfigurationProvider 的RSA 密钥容器
  办法如下:
  1)创立一个可导出的rsa密钥容器,命名为Key
  aspnet_regiis -pc “Key” -exp
  2)在你要加密的信息前面指定密钥容器,如:
  <configProtectedData>
  <providers>
  <clear />
  <add name=”KeyProvider”
  type=”System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL”
  keyContainerName=”Key”
  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特点有如下值:
  3)对装备文件进行加密
  aspnet_regiis -pef “connectionStrings” “E:\project\Test” -prov “KeyProvider”
  参数分别为:需求加密的装备节、项目地点目录的物理途径、加密所运用的密钥容器称号
  再看web.config文件,就会发现connectionStrings节现已被加密了,但
  是运转程序会发现程序依然能够正确拜访数据库。
  此刻,只需运转:
  aspnet_regiis -pdf “connectionStrings” “E:\project\Test”
  就能够对web.config文件进行解密。
  (留意,假如仍是有过错,那或许是您没有给生成的密匙文件满足的权限,
  去到C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
  目录下,找到刚生成的密匙文件,把network service用户的读取权限赋予给它,就能够了,
  直接用指令的话也能够:指令如下 aspnet_regiis -pa “Key” “NT AUTHORITY\NETWORK SERVICE” ,
  或许需求重新启动iis
  4)把密钥容器导出为xml文件
  aspnet_regiis -px “Key” “e:\Key.xml”
  这个指令只导出公钥,因而今后只能用于加密,而无法解密。
  aspnet_regiis -px “Key” “e:\Keys.xml” -pri
  这个则连私钥一同导出了,所以咱们要用这个。
  5)把密钥容器删去
  aspnet_regiis -pz “Key”
  删去后再运转程序,会提示犯错:
  分析器过错信息: 未能运用供给程序“KeyProvider”进行解密。
  供给程序回来过错信息为: 打不开 RSA 密钥容器。
  同理能够证明,在任何一台未装置正确的密钥容器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 AUTHORITY\NETWORK SERVICE”
  操控对不同用户对密钥容器的拜访权限,应该还能够进一步获取一些安全性,
  比方能够操控某些用户即便登录到效劳器上,也无法用aspnet_regiis -pdf对装备文件进行解密。
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章