将 MYSQL 连接到 Windows 的最安全方式 C#

Most Secured way to connect MYSQL to Windows Form C#

关于这个话题已经有很多 SO post,但我想再问一遍,因为有些问题已经是 2-3 年前的事了。

建议流程列表

老实说,我对第一个只了解一点,另外两个我是新手。所以我的问题是什么是最安全和最容易实施的?

只是我计划 build:Different 项目的背景,人们将拥有桌面应用程序,他们可以在其中登录并重定向到网站。这意味着该网站已经存在数据库,但我需要创建一个桌面应用程序以便他们可以登录。你会问,既然已经有了网站,为什么还需要创建桌面应用程序?那么这是故事的另一面:)希望有人能给我一些见解。

如果您确实需要确保安全,则最终用户不应访问连接字符串,即使是加密形式也是如此。调试甚至反向编译 .NET 代码并不困难。混淆可以帮助解决这个问题,但是最好将任何编译成最终用户可以访问的代码的代码视为他们可读,这意味着如果您的代码可以解密它,那么足够精明的最终用户有权工具也可以。实际上,这意味着您需要某种中介(例如 Web 服务)才能确保其安全。 Web 服务可以完全控制在您的控制范围内,连接字符串也是如此。如果您将 Web 服务作为 API 提供给外部各方,这与您将使用的原则相同(并且将它写成好像您是一个不错的主意)。

编写 Web 服务的缺点是它非常乏味,并且维护更改跟踪之类的东西可能会很痛苦(我认为 EF 可能有一些解决方案,但我没有看过它们) .这就是为什么现在很多人都在编写基于 Web 的应用程序而不是 Windows 表单的原因之一(我建议你好好考虑一下 Windows 表单是否真的需要,或者你是否可以做大部分它基于网络,只有一小部分在 Windows 表格中)。

如果你想要妥协并且不想在配置文件中向最终用户提供连接字符串,你可以使用网络服务来验证用户(或至少你的应用程序)是真实的然后提供一个永远不会存储到磁盘的加密连接字符串。这并不能阻止应用程序被反编译以找出如何获取它,但它使它变得更加困难。您必须根据您的特定情况判断安全问题的严重程度。