【问题标题】:MySQL password securityMySQL密码安全
【发布时间】:2018-01-02 12:10:11
【问题描述】:

我想构建一个连接到 MySQL 数据库的 VB.NET 应用程序。 我正在考虑将 MySQL 密码放在 My.Setting 文件中,但这很容易阅读。在程序上输入密码最安全的方法是什么? 我不想在启动时要求它,我希望它嵌入到软件中,但是在哪里?

【问题讨论】:

  • 有密码就有密码。我不会给任何用户数据库的密码 - 它可以允许然后在没有您的应用程序的情况下访问数据库。相反,让用户向应用程序验证自己,然后应用程序使用自己的凭据。选项取决于它是桌面应用程序还是网络应用程序以及我们不知道的其他细节。另外,请阅读How to Ask 并采取tour

标签: mysql vb.net security reverse-engineering


【解决方案1】:

Wellll..... 如果它以自动程序可读的格式存储(也就是,用户不必输入任何类型的密码或凭证以使应用程序能够使用所述数据库密码),那么没有完全“安全”的方式,因为任何有意义的加密都需要用户输入一些凭据来检索加密信息。您可以将其作为 Base64 文本存储在模块中以进行混淆,但这并不真正“安全”。完全没有。它只是编码不同(未加密)。

对我来说更大的问题是,环境安全吗?例如,在网站的后端,sql 数据库的密码通常存储在 in-the-clear 的 php 配置文件中......但这是因为 环境安全:公众无法获取 php 源代码,并且可以访问后端的可信用户被假定为非恶意用户。

所以,这引发了一些问题:

  • 应用程序从哪里运行?
  • MySQL 数据库在哪里,本地还是远程?
  • 有多少人可以访问此数据库或将使用此应用程序?

这些都是应该考虑的因素。

另外一件事 - 如果您正在构建一个 .NET 应用程序,那么有某些 .NET 代码混淆器会与您的编译代码一起使用,从而使得一旦编译就很难掠夺。您可能对此感兴趣。我相信 Dotfuscator 是 Visual Studio 的标准配置?您可以向他们注册一个免费帐户。

【讨论】:

  • 我正在尝试构建一个 RPG 多人游戏,并且帐户/角色信息存储在 MySQL 数据库中。图像、音乐、连接以及除帐户和角色信息外的所有内容都是基于客户端的。目前我在项目内部的一个模块上有连接字符串,包括ip、端口、用户名和密码。
  • 从您的解释和我对 Web 界面的有限了解来看,我敢打赌您确实需要构建您的桌面应用程序以利用安全隧道与 Web 应用程序/服务通信我>;让网络应用程序/服务与数据库对话,因为它就在隔壁;然后让服务中继消息通过安全隧道返回。这样,您的数据库用户名/密码就不会通过网络发送(它们永远不应该)。桌面应用程序应该只将玩家的凭据发送到远程服务器,该服务器在内部验证和处理所有与数据库相关的内容,并将结果发回。
  • 您甚至可以编写一个简单的 php 脚本来处理这个问题,而且我相信 Visual Studio 支持异步 Web 服务调用。我想。不要引用我的话。
猜你喜欢
  • 1970-01-01
  • 2013-04-16
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
  • 2013-05-19
  • 1970-01-01
  • 2017-11-07
相关资源
最近更新 更多