vb.net连接实体框架连接字符串安全性

时间:2011-09-03 17:43:51

标签: vb.net winforms connection-string app-config ado

我理解在.net v4中加密连接字符串的可能性。我有一个win表单应用程序,将由不同机器上的多个人使用。我知道我需要在应用程序首次在目标计算机上运行时保护连接字符串。但是我担心在一段时间内我的连接字符串将是未加密的。我正在寻找有关如何使用已在安装期间加密或加密的连接字符串部署我的应用程序的建议。

其他人如何以安全的方式加密连接字符串?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以获取您的connectionString配置部分和modify it,如下所示:

oSection = oConfiguration.GetSection("connectionStrings") as System.Configuration.ConnectionStringsSection;

if (oSection != null)
{
    if ((!(oSection.ElementInformation.IsLocked)) && (!(oSection.SectionInformation.IsLocked)))
    {
        if (protect)
        {
            if (!(oSection.SectionInformation.IsProtected))
            {
                blnChanged = true;

                // Encrypt the section.
                oSection.SectionInformation.ProtectSection
                            (strProvider);
            }
        }
        else
        {
            if (oSection.SectionInformation.IsProtected)
            {
                blnChanged = true;

                // Remove encryption.
                oSection.SectionInformation.UnprotectSection();
            }
        }
    }

    if (blnChanged)
    {
        // Indicates whether the associated configuration section 
        // will be saved even if it has not been modified.
        oSection.SectionInformation.ForceSave = true;

        // Save the current configuration.
        oConfiguration.Save();
    }
}

Example in VB.NET

Public Sub ProtectSection()
    ' Get the current configuration file.
    Dim config As Configuration = ConfigurationManager.OpenExeConfiguration
                    (ConfigurationUserLevel.None)
    Dim protectedSection As ConfigurationSection = config.GetSection(m_Section)

    ' Encrypts when possible
    If ((protectedSection IsNot Nothing) _
    AndAlso (Not protectedSection.IsReadOnly) _
    AndAlso (Not protectedSection.SectionInformation.IsProtected) _
    AndAlso (Not protectedSection.SectionInformation.IsLocked) _
    AndAlso (protectedSection.SectionInformation.IsDeclared)) Then
        ' Protect (encrypt)the section.
        protectedSection.SectionInformation.ProtectSection(Nothing)
        ' Save the encrypted section.
        protectedSection.SectionInformation.ForceSave = True
        config.Save(ConfigurationSaveMode.Full)
    End If
End Sub

您可以在安装应用程序时使用此代码(检查,配置是否受保护),并且您可以在运行应用程序期间每次检查。

<强>更新
关于注释中的问题 - 您可以使用空连接字符串分发应用程序,并在安装期间设置此属性(在这种情况下不要忘记代码混淆)并保存配置文件。