【问题标题】:C# secure connection info for MYSQLMYSQL 的 C# 安全连接信息
【发布时间】:2015-03-01 14:25:11
【问题描述】:

我即将发布一个使用数据库连接来存储数据的小工具。问题是:如何防止人们对我的代码进行逆向工程并让UsernamePassword 访问数据库?

对于早期的项目(仅供我自己使用),我将connection-string 定义为我的应用程序中的全局变量。但这是非常不安全的,因为只需几分钟就可以将这个字符串从 exe 中取出。

还有很多混淆代码的方法可以逆向。

我真的很喜欢提供代码,但我不知道该发布什么。这更多是关于理论的问题。编码是我会照顾自己的部分。

这是我的一个小想法,我不太喜欢:
我可以在服务器上放置第二个工具。真正的应用程序将连接到第二个工具,提供数据,第二个数据最终将连接到我的数据库本身。这样,连接字符串将存储在第二个应用程序中,没有人可以抓取它。

【问题讨论】:

  • 大多数人会将用户设置存储在设置文件中。有时,特定于用户。有时,特定于机器。如果这些设置包含敏感数据,则会对这些值进行加密。
  • 是的,我以前读过。但是要使用加密的字符串,我需要解密它。这种“如何解密”的方法也将存储在我的应用程序中。又是一种可能的方法来解决它,你不觉得吗?我希望将这个工具传播给至少 100-200 人。所以风险是存在的。
  • 您的想法可以实现为网络服务。您不想允许外部连接到您的数据库。
  • 监听通过网络发送的数据怎么样?您也将能够看到密码。 CodeCaster 是对的:使用 Web 服务。
  • @PatrickHofman:SSL 是重点。这也是我已经考虑过的部分。

标签: c# mysql server code-access-security


【解决方案1】:

事实上,在客户端计算机上存储敏感信息很容易受到针对您的database 的攻击。您可以研究的建议是应用程序的三层架构模型 (http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture)。在三层架构中,你有你的表示层(你的应用程序),你的逻辑层(这个层将是你的所有客户端都可以访问你的数据库的中心站),你有你的数据库层(服务器你的数据库在哪里)。使用此架构,您可以确保存储和检索的所有数据都来自单一来源和高级别的安全性。

在过去(现在仍然如此),程序员必须创建自己的套接字服务器或进行高级网络编程来开发这样的解决方案,但是微软开发了一个名为 Windows Communication Foundation (WCF) 的工具它消除了编写自己的套接字服务器的痛苦,让您专注于开发自己的实现。但请注意,WCF 默认情况下是安全的,但没有理由不研究使您的产品对黑客具有鲁棒性的方法(例如知道您将使用什么协议,您将使用什么安全措施(Transport vs 消息等),在客户端加密数据,这样潜在的病毒就不会发现敏感信息等)。话虽如此,WCF 是一项高度完善的服务,并且很容易启动和运行。

WCF 上的一个很好的初学者视频教程可以在这里找到:https://www.youtube.com/playlist?list=PLhq7kqloVlM-bI9W_7iDZhObAeyrFt1y_

编辑:视频的播放列表消失了,但视频本身仍然存在。只需搜索他所有的视频,寻找关键字“WCF”

这是链接:https://www.youtube.com/user/JesseDietrichson/featured

【讨论】:

  • 感谢您的努力。对此表示赞同。我会查看教程并回来标记或 cmets。
  • 它们很长,他有时会结巴,但坚持下去,他解释得很好。
  • @Hayden youtube 链接不再有效。你能检查一下吗?
猜你喜欢
  • 2014-12-07
  • 1970-01-01
  • 2013-12-10
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多