如何在C#应用程序中安全隐藏数据库凭据?

4
我有一个情况,用户需要在C#应用程序中访问远程MySQL服务器。
基本上,一个用户在他/她的桌面上使用C#应用程序 ->>>> 连接到远程服务器 ->>>>>>>> [ REMOTE ]
我该如何安全地隐藏数据库连接细节?
我有几个想法,但我认为它们不安全。
1.将数据库连接数据加密为文件并存储在应用程序目录中。
2.提示登录页面,让人输入用户名/密码,然后将数据库连接数据传输到用户的计算机。

你的威胁模型没有完全说明。你是想把这些数据从用户那里隐藏起来,还是要防止其他坏人获取?如果是后者,这些坏人是否能够访问用户的机器? - Keith Randall
@Keith Randall // 实际上,两者都需要考虑,因为有时候用户会变成坏用户。 - Moon
3个回答

5
无论你做什么,如果凭证以明文形式出现在应用程序中,你都很容易受到攻击。
要么在数据库前面实现一个服务层,要么如果直接连接是必要的,请尝试设计一种方案,允许每个用户拥有一个唯一的数据库账户,并在数据库上适当授权。

3

使用system.configuration.configurationmanager和加密的连接字符串,或者使用唯一的凭据。 - J.Hendrix

0
我建议基于用户凭据实现某种形式的会话管理。这可以通过多种方式实现。
例如,您可以通过简单地使用后端系统包装数据库访问来实现此目的。您的桌面客户端对数据库毫不知情,仅与后端系统交互。不幸的是,如果您必须从头开始执行此级别的间接操作,则实现它并不容易,但它肯定会使您的应用程序更加强大和灵活。WCF服务可以帮助实现这一点。

我错过了sipwiz的回答。它基本上与这个答案差不多。 - Newbie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接