在编程语言中使用DB连接

时间:2015-10-12 09:46:35

标签: database programming-languages reverse-engineering

我有一个问题,我似乎无法找到答案,所以我会在stackoverflow上尝试。

我看到人们在使用不同语言编程时(例如Java,C#等),他们直接在源代码中输入db info。

我总是使用api(在我的情况下,php后端),因为我不信任最终用户。

任何拥有正确技能的人都不能反向启动可执行文件并阅读源代码吗?我知道你可以对你的代码进行模糊处理,但这是否足够安全?

一个很好的例子:在C#中创建包含数据库连接的应用程序的人。他们使用.NET reactor来混淆文件。我知道.NET反应器混淆文件存在反混淆器。那么..?我们应该总是使用某种api,因为我们只相信我们自己的服务器有db info吗?

1 个答案:

答案 0 :(得分:1)

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

因此,如果将数据库信息放入应用程序中,则应假定恶意用户可以使用应用程序中的凭据访问数据库。如果这不合适(可能是,例如,如果凭证提供只读访问权限),则不要这样做。

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

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

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