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

如何在C#应用程序中安全地隐藏数据库凭据?,c#,mysql,C#,Mysql,我的情况是,用户在C#应用程序中访问远程MySQL服务器 基本上 在其桌面上使用C#应用程序的用户->>>>>连接到远程->>>>>>>>>>[远程] 如何安全地隐藏数据库连接详细信息 我没有什么主意,但我认为它们不安全 将数据库连接数据加密到文件中,并将其存储在应用程序目录中 提示登录页面,让用户输入用户名/密码,然后将数据库连接数据传输到用户的计算机 无论您做什么,如果凭据以明文形式出现在应用程序中,您都容易受到攻击 在数据库前面实现服务层,或者如果需要直接连接,请尝试提出一种方案,允许每个

我的情况是,用户在C#应用程序中访问远程MySQL服务器

基本上

在其桌面上使用C#应用程序的用户->>>>>连接到远程->>>>>>>>>>[远程]

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

我没有什么主意,但我认为它们不安全

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

  • 无论您做什么,如果凭据以明文形式出现在应用程序中,您都容易受到攻击


    在数据库前面实现服务层,或者如果需要直接连接,请尝试提出一种方案,允许每个用户拥有一个唯一的数据库帐户,然后在数据库上对其进行适当授权。

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


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


    例如,您可以通过简单地用后端系统包装数据库访问来实现这一点。您的桌面客户端对数据库一无所知,只与后端系统进行交互。不幸的是,如果您必须从头开始,那么实现这种级别的间接寻址并不是一件小事,但它肯定会使您的应用程序更加健壮和灵活。WCF服务可以帮助实现这一点。

    您的威胁模型没有完全指定。你是想对用户隐藏这些数据,还是想对其他坏人隐藏这些数据?如果是后者,坏人是否可以访问用户的机器?@Keith Randall//事实上,两者都有,因为用户有时会变成坏用户。我错过了sipwiz的答案。它与此基本相同。+1使用带有加密连接字符串的system.configuration.configurationmanager。或唯一凭证。