在编程语言中使用数据库连接

Use DB connection in programming languages

我有一个问题似乎找不到答案,所以我会在 Whosebug 上试试。

我看到当人们使用不同的语言(例如 Java、C# 等)进行编程时,他们会直接在源代码中输入数据库信息。

我一直使用 api(在我的例子中,php 后端),因为我不信任最终用户。

难道任何具有正确技能的人都能够对可执行文件进行逆向工程并读取源代码吗?我知道您可以混淆您的代码,但这足够安全吗?

一个很好的例子:有人用 C# 创建了一个包含数据库连接的应用程序。他们使用 .NET 反应器来混淆文件。我知道存在用于 .NET 反应器混淆文件的去混淆器。所以.. ?我们是否应该始终使用某种 api 因为我们只信任我们自己的服务器和数据库信息?

如果你让我下载一个程序,你应该假设我可以对程序的确切功能进行逆向工程。各种混淆和加密会使这变得更难,但它们永远不会让它变得不可能。

因此,如果您将数据库信息放入您的应用程序,您应该假设恶意用户将能够使用应用程序的凭据访问数据库。如果那不行(例如,如果凭据提供只读访问权限,则可能是这样),则不要这样做。

在应用程序和数据库之间使用某种具有 API 的中间服务器是一种合理的方法。但它本身并不能完全解决问题:现在你应该假设恶意用户可以访问 API 并且你必须确保那没问题。

一个类似的解决方案是不仅将数据库代码移动到您控制的服务器,而且将(几乎)所有代码都移动到那里并将您的应用程序制作成一个网站。

另一种解决方案可能是仅将应用程序分发给您信任的用户(例如您公司的员工)。