防止攻击者反编译 iOS 应用程序并获取数据库访问权限

Prevent attacker from decompiling iOS app and getting database access

根据 this post,可以反编译 iOS 应用程序。

如何防止攻击者访问我的 AWS DynamoDB 数据库?只是像 Amazon developer guide 中显示的那样公开访问密钥似乎不太安全。

我认为我可以使用钥匙串来存储密钥,但我觉得对于有动机的攻击者来说,如果他们有应用程序的汇编源代码,将有一种简单的方法来解决这个问题。

目前,我使用 Amazon Cognito 进行连接。我必须使用身份 ID 和角色名称进行连接。我看不出有什么可以阻止攻击者简单地获取这些值并连接到数据库。

例如,是什么阻止了攻击者反编译 Facebook iOS 应用程序代码并删除所有用户?

如何防止攻击者反编译我的 iOS 应用程序并获取数据库访问密钥,或者至少防止他们造成任何重大破坏,例如删除用户?

根据我公认的有限经验,我想说一个真正有动机的攻击者将 总是 能够检索您用来访问数据库的凭据,无论您做什么到您的可执行文件。但是,我会质疑为什么您的应用程序首先需要直接访问您的数据库。

保护服务器端数据的常用方法是使用网络服务来访问它。应用程序通过请求联系网络服务,服务联系数据库,获取数据,并将其发回。由于 Web 服务和数据库都托管在您的服务器上,并且只有 Web 服务需要直接访问您的数据库,因此无需在您的应用程序中存储数据库访问信息。问题解决了。

这是不可能的。为了让您的程序做某事,它必须包含允许计算机执行该操作的指令,这意味着其他任何人也可以按照这些指令学习如何做完全相同的事情。

您可以使用 SQLCipher 并使用您的授权的 userToken and/or userId 作为密码密钥。