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

时间:2009-11-05 01:15:00

标签: c# mysql

我有一种情况是用户在C#应用程序中访问远程MySQL服务器。

基本上,

在他/她的桌面上使用C#应用程序的用户 - >>>>连接到遥控器 - >>>>>>>> [远程]

如何安全隐藏数据库连接详细信息?

我的想法很少,但我认为它们不安全。

  1. 将数据库连接数据加密到文件中并将其存储在应用程序目录中。
  2. 提示登录页面,让人输入用户名/密码,然后将数据库连接数据传输到用户的计算机。

3 个答案:

答案 0 :(得分:5)

如果凭据以明文形式在应用程序中结束,无论您做什么,都会受到攻击。

要么在数据库前面实现服务层,要么直接连接是必不可少的,尝试并提出一个方案,为每个用户提供一个唯一的数据库帐户,然后在数据库上对其进行适当的授权。

答案 1 :(得分:3)

通常,最好向用户询问凭据,以便管理员可以启用或禁用每个帐户。除此之外,还有用于加密全部或部分配置文件的API。这是一篇示例文章:

http://www.codeproject.com/KB/dotnet/EncryptingTheAppConfig.aspx

答案 2 :(得分:0)

我会根据用户凭据建议某种形式的会话管理。这可以通过多种方式实现。

例如,您可以通过简单地使用后端系统包装数据库访问来实现此目的。您的桌面客户端无视数据库并仅与后端系统进行交互。不幸的是,如果你必须从头开始实现这种级别的间接并不是微不足道的,但它肯定会使你的应用程序更加健壮和灵活。 WCF服务可以帮助实现这一目标。