专栏首页张善友的专栏ASP.NET 2.0加密Web.config 配置文件

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

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

针对asp.net 2.0的应用程序的数据库链接字符串进行加密:例如,未加密的配置文件中可能包含一个指定用于连接到数据库的连接字符串的节,如下面的示例所示:

<configuration>
  <connectionStrings>
    <add name="SampleSqlServer" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
   </connectionStrings>
</configuration>

ASP.NET 2.0 中有一个新的安全特性.可以对 Web.config 文件中的任何配置节进行加密处理,可以通过手工运行工具aspnet_regiis或者编程来完成这个工作。如果你可以直接访问你的Web 服务器,你可以通过运行如下的命令行:

 cd  %windows%\Microsoft.NET\Framework\versionNumber

aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" –prov RsaProtectedConfigurationProvider

-pd section  对配置节进行解密。此参数采用下面的可选参数:

·         -app virtualPath   指定应该在包含路径的级别进行解密。

·         -location subPath   指定要解密的子目录。

·         -pkm   指定应该对 Machine.config 而非 Web.config 文件进行解密。 -pdf section webApplicationDirectory  对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行解密。 -pe section  对指定的配置节进行加密。此参数采用下面的可选修饰符:

·         -prov provider   指定要使用的加密提供程序。

·         -app virtualPath    指定应该在包含路径的级别进行加密。

·         -location subPath   指定要加密的子目录。

·         -pkm   指定应该对 Machine.config 而非 Web.config 文件进行加密。 -pef section webApplicationDirectory  对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行加密。

如果你是使用虚拟主机等不能访问物理的服务器,你仍然能够通过编程方式加密的连接字符串:

1 Configuration config = Configuration.GetWebConfiguration(Request.ApplicationPath); 2 ConfigurationSection section = config.Sections["connectionStrings"]; 3 section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");; 4 config.Update (); 现在, 使用受保护配置对连接字符串值进行加密的配置文件不以明文形式显示连接字符串,而是以加密形式存储它们,如下面的示例所示:

<configuration>
 
  <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>RXO/zmmy3sR0iOJoF4ooxkFxwelVYpT0riwP2mYpR3FU+r6BPfvsqb384pohivkyNY7Dm4lPgR2bE9F7k6TblLVJFvnQu7p7d/yjnhzgHwWKMqb0M0t0Y8DOwogkDDXFxs1UxIhtknc+2a7UGtGh6D
i3N572qxdfmGfQc7ZbwNE=
            </CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>KMNKBuV9nOid8pUvdNLY5I8R7BaEGncjkwYgshW8ClKjrXSM7zeIRmAy/cTaniu8Rfk92KVkEK83+UlQd+GQ6pycO3eM8DTM5kCyLcEiJa5XUAQv4KITBNBN6fBXsWrGuEyUDWZYm6Eijl8DqRDb
11i+StkBLlHPyyhbnCAsXdz5CaqVuG0obEy2xmnGQ6G3Mzr74j4ifxnyvRq7levA2sBR4lhE5M80Cd5yKEJktcPWZYM99TmyO3KYjtmRW/Ws/XO3z9z1b1KohE5Ok/YX1YV0+Uk4/yuZo0Bjk+rErG505YMfRVtxSJ4ee418
ZMfp4vOaqzKrSkHPie3zIR7SuVUeYPFZbcV65BKCUlT4EtPLgi8CHu8bMBQkdWxOnQEIBeY+TerAee/SiBCrA8M/n9bpLlRJkUb+URiGLoaj+XHym//fmCclAcveKlba6vKrcbqhEjsnY2F522yaTHcc1+wXUWqif7rSIPhc0+
MT1hB1SZjd8dmPgtZUyzcL51DoChy+hZ4vLzE=
        </CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>
 

更详细信息请参看MSDN: 受保护配置概述的相关章节。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用SQL Server Management Studio 2008 将数据库里的数据导成脚本

    之前很羡慕MySQL 有这样的工具可以把数据库里的数据导成脚本,SQL Server 2005 的时候大牛Pinal Dave写了个Database Publi...

    张善友
  • CodePlex站点的Wiki引擎已开源

    CodePlex站点的Wiki引擎现在正式开源,除了像列表和表格等基本布局外,WikiPlex还对嵌入式视频(Flash、QuickTime和YouTube等)...

    张善友
  • .NET中的DES对称加密

    DES是一种对称加密(Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。一般...

    张善友
  • 当我们在谈论前端加密时,我们在谈些什么

    前端安全是Web安全的一部分,常见的安全问题会有XSS、CSRF、SQL注入等,然而这些已经在程师界得到了相当高的重视并且有了很成熟的解决方案。 所以我们今天只...

    前端博客 : alili.tech
  • centos yum安装mysql

    下载mysql的repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rp...

    用户1141560
  • WINDOWS服务器同时安装多个版本的MYSQL的方法,MQYSQL5和MQYSQL8的共存。

    服务器上已经有了MYSQL5.X,但因为需要还需要再安装一个MYSQL8,查了一下大概的意思就是 只要服务名和端口别重复就可以同时共存。

    睿儿网络郝刚
  • 每周学点大数据 | No.23 外排序(二)

    No.23期 外排序(二) Mr. 王:接下来我们用一个例子对磁盘归并排序进行说明。先来约定讨论的参数:N=24,M=8,B=2。 小可:嗯,一共有2...

    灯塔大数据
  • MTSC2019-腾讯WeTest独家揭秘移动游戏测试和质量保障 QA 黑科技

    原文链接:https://wetest.qq.com/lab/view/459.html

    WeTest质量开放平台团队
  • MTSC2019-腾讯WeTest独家揭秘移动游戏测试和质量保障 QA 黑科技

    ? ? WeTest 导读 TesterHome 联合腾讯 WeTest 出品 MTSC2019 重磅游戏测试 Topic ,首次公开揭秘腾讯亿级用户游戏背后...

    WeTest质量开放平台团队
  • Ray和RLlib用于快速并行强化学习

    Ray不仅仅是一个用于多处理的库,Ray的真正力量来自于RLlib和Tune库,它们利用了强化学习的这种能力。它使你能够将训练扩展到大型分布式服务器,或者利用并...

    磐创AI

扫码关注云+社区

领取腾讯云代金券