我的所有网格和组合框都绑定到数据集/适配器,连接字符串在app config中设置,但连接字符串在我的客户端中安装时包含在主输出中。我试图排除它,因为连接字符串包含我的数据库密码,但我的应用程序返回了一个异常。
<connectionStrings>
<add name="HNBS_SALON_SPA.My.MySettings.dbhnbspapuaConnectionString"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source="mydb.accdb";Persist Security Info=True;Jet OLEDB:Database Password=abcdefg"
providerName="System.Data.OleDb" />
</connectionStrings>
答案 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)
您可以通过在
web.config
加密来隐藏连接字符串 请参阅example here。如果您的意思是使
web.config
文件对系统用户不可见,那么它对您的应用程序来说是不可见的。如果您将其显示为您的应用程序,则表示任何具有足够权限的用户都可以阅读。您只能解决此文件中根本没有连接字符串的问题。 例如,您可以专门设计加密存储(例如,基于XML
文件),动态解码并在应用程序中以编程方式为连接字符串分配代码。- 醇>
加密将是隐藏信息的最佳方法。为什么连接字符串类型的信息存储在
webconfig
中,如果更改了代码并且易于全局访问,则无需再次编译代码。如果在更改字符串中的userid
和password
时要特别注意加密/解密方法。
例如,您可以参考this article。
(Source)