我有一个问题,我似乎无法找到答案,所以我会在stackoverflow上尝试。
我看到人们在使用不同语言编程时(例如Java,C#等),他们直接在源代码中输入db info。
我总是使用api(在我的情况下,php后端),因为我不信任最终用户。
任何拥有正确技能的人都不能反向启动可执行文件并阅读源代码吗?我知道你可以对你的代码进行模糊处理,但这是否足够安全?
一个很好的例子:在C#中创建包含数据库连接的应用程序的人。他们使用.NET reactor来混淆文件。我知道.NET反应器混淆文件存在反混淆器。那么..?我们应该总是使用某种api,因为我们只相信我们自己的服务器有db info吗?
答案 0 :(得分:1)
如果你让我下载一个程序,你应该假设我可以逆向工程程序的功能。各种混淆和加密可以使这更难,但它们永远不会让它变得不可能。
因此,如果将数据库信息放入应用程序中,则应假定恶意用户可以使用应用程序中的凭据访问数据库。如果这不合适(可能是,例如,如果凭证提供只读访问权限),则不要这样做。
某种具有API的中间服务器位于应用程序和数据库之间是一种合理的方法。但它并没有完全解决问题:现在你应该假设恶意用户可以访问API,你必须确保它没问题。
类似的解决方案是不仅将数据库代码移动到您控制的服务器,而且将(几乎)所有代码移动到那里,并将您的应用程序转换为网站。
另一种解决方案可能是仅将应用程序分发给您信任的用户(例如贵公司的员工)。