如何从用户隐藏app config中的连接字符串

时间:2018-04-29 10:01:54

标签: vb.net connection-string

我的所有网格和组合框都绑定到数据集/适配器,连接字符串在app config中设置,但连接字符串在我的客户端中安装时包含在主输出中。我试图排除它,因为连接字符串包含我的数据库密码,但我的应用程序返回了一个异常。

<connectionStrings>
    <add name="HNBS_SALON_SPA.My.MySettings.dbhnbspapuaConnectionString"
        connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=&quot;mydb.accdb&quot;;Persist Security Info=True;Jet OLEDB:Database Password=abcdefg"
        providerName="System.Data.OleDb" />
</connectionStrings>

2 个答案:

答案 0 :(得分:2)

感谢@ashleedawg,我搜索了更多关于加密的线程和文章,并找到了一些:

https://weblogs.asp.net/jongalloway/encrypting-passwords-in-a-net-app-config-file

ConnectionStrings in app.config. What about security?

现在我将代码转换为vb.net并将其修改为我的需要(部分键),我现在可以加密app.config。

    Private Sub EncryptConfigSection()
    Dim Config As Configuration
    Dim Section As ConfigurationSection

    Config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
    Section = Config.GetSection("connectionStrings")
    If (Section IsNot Nothing) Then

        If (Not Section.SectionInformation.IsProtected) Then

            If (Not Section.ElementInformation.IsLocked) Then
                Section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider")
                Section.SectionInformation.ForceSave = True
                Config.Save(ConfigurationSaveMode.Full)
            End If
        End If
    End If

End Sub

尽管需要运行应用程序至少一次以进行加密运行,但这正是我现在所需要的。

答案 1 :(得分:0)

  
      
  1. 您可以通过在web.config加密来隐藏连接字符串   请参阅example here

  2.   
  3. 如果您的意思是使web.config文件对系统用户不可见,那么它对您的应用程序来说是不可见的。如果您将其显示为您的应用程序,则表示任何具有足够权限的用户都可以阅读。您只能解决此文件中根本没有连接字符串的问题。   例如,您可以专门设计加密存储(例如,基于XML文件),动态解码并在应用程序中以编程方式为连接字符串分配代码。

  4.   
  5. 加密将是隐藏信息的最佳方法。为什么连接字符串类型的信息存储在webconfig中,如果更改了代码并且易于全局访问,则无需再次编译代码。如果在更改字符串中的useridpassword时要特别注意加密/解密方法。
      例如,您可以参考this article

  6.   

Source

更多信息: