不与黑客共享连接字符串的最佳方法

问题描述 投票:0回答:4

我目前正在开发一个WinForms .NET应用程序,该应用程序将提供给最终用户。问题是:如何(BEST)隐藏连接字符串,以便黑客在反编译程序后无法访问我的数据库?

我想创建一个只使用基础上的过程的用户。

我搜索了整个论坛,发现了一些关于resource,config.app等的评论。

@PanagiotisKanavos Exact,针对Mysql数据库

但它并不能保护100%。

2019年是否有任何方法可以保护您免于泄露应用程序中使用的登录名和密码?

Connection  currently is in my c# code and looks like :
string connectionstring = "Server = servername;Port=1111;Database=databasename;Uid=login;Pwd=password;Convert Zero Datetime=True";
c# mysql connection-string desktop-application password-protection
4个回答
1
投票

有开箱即用的加密配置的方法。 ASP.NET 2.0引入了一项称为受保护配置的新功能,使您可以加密配置文件中的敏感信息。虽然主要是为ASP.NET设计的,但受保护的配置也可用于加密Windows应用程序中的配置文件部分。有关受保护配置功能的详细说明,请阅读msdn中的这两篇文章:

Protecting connection information in general

Encrypting connectionstrings and configuration sections


1
投票

我建议使用API​​与数据库中的数据进行交互。使用使用该程序传递给用户的令牌。


0
投票

2019年是否有任何方法可以保护您免于泄露应用程序中使用的登录名和密码?

当然有。不要在您的请求代码中使用该连接字符串,而是将其放在web.configApp.config等配置文件中。然后,您可以使用Azure密钥保管库或环境变量在密钥保管库中完全拥有该连接字符串,并在配置文件中仅包含azure密钥保管库引用URL。

了解更多关于Key Vault https://docs.microsoft.com/en-us/azure/key-vault/key-vault-whatis的信息

根据其中一条评论,如果您的最终目标是分发exe;那么你也应该在配置文件中有连接字符串,并且应该考虑在配置文件中加密和存储加密的字符串。阅读有关受保护配置https://docs.microsoft.com/en-us/azure/key-vault/key-vault-whatis的更多信息


-1
投票

如果您希望客户端计算机能够访问它,则无法保证连接字符串的安全

无论您如何向客户端提供连接字符串,任何具有恶意意图的人都可以访问应用程序的内存并在运行时检索连接字符串。

© www.soinside.com 2019 - 2024. All rights reserved.