65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET 2.0 中 Web.config 内连接字符串的加密

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.07/5 (25投票s)

2008年2月1日

CPOL

3分钟阅读

viewsIcon

166438

ASP.NET 2.0 中 Web.config 内连接字符串的加密与解密

引言

本文档为您提供了关于Web.config中连接字符串加密功能的概述,以及如何使用加密来提高安全性并与数据库保持安全连接。

关于连接字符串的加密与解密

NET Framework 2.0 允许您加密Web.configmachine.config文件中的配置节。

NET Framework 2.0 添加了对配置文件加密的支持。.NET Framework 库支持代码中的加密和解密。在本文中,我将展示如何通过加密来保护存储在配置文件中的数据,并描述配置文件节。

建议您将数据库连接字符串存储在Web.config文件中并加密这些连接字符串。

此功能允许开发人员加密配置文件中的一个或多个节。以下节可用于加密:

  • connectionStrings:数据库连接字符串
  • appSettings:自定义应用程序设置
  • sessionState:配置会话状态
  • Identity:Web 应用程序标识,可能包括模拟凭据

我们无法在web.configmachine.config文件的以下节中使用受保护的配置功能:

  • processMode
  • runtime
  • mscorlib
  • configProtectedData
  • satelliteassemblies
  • cryptographySettings
  • cryptoNameMapping
  • cryptoClasses

保护敏感数据

配置加密功能可提高应用程序的安全性。如果有人能够访问web.config文件,他们也无法访问数据库信息。.NET Framework 提供了两种加密配置文件的方法:

  • aspnet_regiis.exe命令行实用程序
  • 开发人员应用程序代码中的加密

本文档侧重于应用程序代码方法。

以下 **命名空间** 用于通过代码方法加密配置文件:

  • System.Configuration
  • System.Web.Configuration

它包含以下两个与加密相关的方法:

  • ProtectSection:标记一个配置节以进行保护。用于加密的提供程序名称,它作为唯一参数传递给该方法。
  • UnprotectSection:移除与配置节关联的受保护加密。

示例

以下简单的 ASP.NET web.config 文件演示了配置数据的加密和解密。

步骤 1:查看 connectionStrings web.config 节

<connectionstrings><add class=""code-string"" name=""<span"">
"Conn" connectionString="Data Source=manish;Initial Catalog=Publish;
User ID=sa;Password=admin"
providerName="System.Data.SqlClient" /> </connectionstrings>

步骤 2:导入以下命名空间

我们将编写调用连接字符串或初始化连接字符串的代码。

Imports System.Configuration
Imports System.Web.Configuration

步骤 3:创建一个函数(configencryption)

此函数可用于加密和解密。
来自 ASP.NET Web 窗体的以下 VB.NET 代码可加密配置文件中的 connectionStrings 节。

Public Shared Function webencrypt()
        Dim config As Configuration = WebConfigurationManager.OpenWebConfiguration("~")
        '' Write the section name of web.config file (connectionStrings)
        Dim configSection As ConfigurationSection = c_
			onfig.GetSection("connectionStrings")

        '' Check the section  of web.config file (connectionStrings) if Protected 
        '' then UnprotectSection (decrypt) the section
        If configSection.SectionInformation.IsProtected Then
            configSection.SectionInformation.UnprotectSection()
            config.Save()
        Else
            '' Check the section of web.config file (connectionStrings) 
            '' if UnprotectSection then 
            '' protect (encrypt) Section the section
            configSection.SectionInformation.ProtectSection_
			("DataProtectionConfigurationProvider")
            config.Save()
        End If
    End Function 

步骤 4:在 *.vb 文件中初始化连接之前调用此函数

Call webencypt()
sqlstring = System.Configuration.ConfigurationManager.ConnectionStrings_
						("conn").ConnectionString

在运行上述代码并加密web.config文件后,您可以在 ASP.Net 项目中打开web.config文件。web.config节的内容现在将显示为加密状态。

步骤 5:查看 connectionStrings web.config 节(解密后)

<connectionstrings class=""code-string"" 
	configprotectionprovider=""<span"">"DataProtectionConfigurationProvider">    
<encrypteddata>
      <cipherdata>
        <ciphervalue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAe3IeYtVA1Ein16Kz9W96UQQAAAACAAAAAA
ADZgAAqAAAABAAAABLQdIlQjmYEpvL/YlcKtQIAAAAAASAAACgAAAAEAAAALJbofuwZFVfY0X5w
PO172OYAQAAM1JJuZpvWvHlvZZCGMpLXmvkURVkdv3gjWjED3y0X29kGfKrecXPg+xngFAQ1qG4
Ruxa96leDTo+Eb1QrvXgZgdABN+rXmmzPwi9csOCorTidlJ/55drL96zyeQrynPfs4HRqtRPmc8
4F/4hVbEe9xnKIiykSPEYSnOIef4arj567y5vmwcgh8b11d4wmbMIbrvgWFOWniJRXgvkHAYMje
/R5C6yRDDqr7OCkvZoX/hqe+mkJRvpHewCXJBIcbHsF2sCs3WZQlNbDY7H9J3EESPR4S0qPTEb3
q8GD31vjMPo7WbDTTN8/lXi6BbooyY6IPviIkxUvmbAxxiWXmz7J93WYKqnhFUHunv8JgoBgc8a
6t55zpsG1oNGSJAAJ7qBu0Y1+gktPQof/DabkL54Zl8wK8/u6q7mU+nJbaHW9AKC6bfCWa16QXV
6jF2QWHGqrsXzRqURXsG0t+9bdNwmiNHimpVc6p+JhiXNd9Ym8NbDCCS2ICgNDActd5MmGfJpHM
PbubNuVgcueSdH8bdHJXSc1hucDURrFAAAAHOaFiNRTxD+d8YctPO/HiGD9NeV  </cipherdata>

步骤 6:下次页面回发时,查看 connectionStrings web.config 节

<connectionstrings><add class=""code-string"" name=""<span"">
"Conn" connectionString="Data Source=manish;Initial Catalog=Publish;
User ID=sa;Password=admin"
providerName="System.Data.SqlClient" />
  </connectionstrings>

结论

在本文中,我们了解了如何在 ASP.NET 2.0 web.config文件中加密和解密 connection strings 节。

免责声明

本文档仅用于教育目的,是本人对该主题的笔记、材料和理解的汇编。

© . All rights reserved.