我可以用另一种语言连接到数据库吗

Can I connect to database with another language

您好,我有一个 C# WinForms 应用程序。我在 C# 上编写了基本方法。但我需要一个登录表单,它不安全,因为像 dotpeek 这样的应用程序可以检查源代码并破解它。我可以与用另一种语言(java、c、python 等)编写的另一个应用程序通信吗?我需要将输入数据从 WinForms C# 发送到另一个应用程序,然后它应该连接到数据库并检查登录是否成功,然后 return 将值返回给 C# WinForms 应用程序。这可能吗,我该如何实现?我不想用另一种语言编写所有应用程序,因为 C# 有很好的处理方法 images/pixels 和 gui 支持,内存使用量非常小。

您的担心并非毫无根据。 C#,或者就此而言,CLR 上的任何 .net 语言 运行, 比 C 或 C++ 等语言更容易检查。

话虽如此,没有任何应用程序是完全安全的,应用程序之间的通信也有其自身的问题。一个应用程序如何验证另一个应用程序?等等。您可以创建一个与数据库通信的网络服务(并使用 HTTP 或 WCF 与网络服务通信),这意味着您的应用程序不会直接访问数据库,但这只会保护数据库免受您的影响应用程序,它仍然会允许某人检查您的应用程序并使用网络服务,冒充您的应用程序。此外,您需要在某些网络托管服务上托管网络服务,然后您必须相信该服务不会检查您的应用程序...

您可以通过将密码等存储为字节数组来减少问题,但无论您做什么,我都不知道有什么方法可以完全保护您的应用程序。如果恶意 app/actor 在您的计算机上,他们可以检查您的应用程序。

至于您的问题本身 - 请查看 WCF or named pipes (includes a simple example)

我明白你要表达的意思了。 需要承认的一件事是您无法完全避免反编译应用程序。 C#或C++,无论什么都可以逆向工程。

如果你还需要,比较安全的做法是不把检查应用程序放在客户端的机器上。创建一个 API 并将数据库托管在服务器上。 然后从您的 Windows Forms 应用向服务器发起一个 Http 请求。

然后您就可以完全控制登录 API 和数据库。许多应用程序使用与此类似的 OAuth。另一个例子是应用程序使用在线 API.

验证其许可证

如果您想要设置,您可以每月花费大约 10 美元获得一个 LightSail Windows 服务器。尝试探索