我正在尝试为我的iOS应用程序设置Kahuna,但还没有找到明确的答案-文档上说密钥是用于验证请求的API密钥,但我找不到任何明确说明其中任何一个应该保密/不在源代码中的东西。这些代码放在我的代码里安全吗,还是应该放在服务器端?
谢谢
发布于 2018-12-12 02:11:07
这些代码放在我的代码里是安全的,还是应该放在服务器端?
简短的回答是,不能让它们留在移动应用程序代码上,可以让它们留在服务器端。
为什么?
因为它们将是移动应用程序代码中的静态秘密,因此可以使用任何反向工程工具轻松提取它们,比如使用Mobile Security Framewrok对应用程序二进制文件进行反编译。
替代方案-
你可以尝试代码混淆,在移动应用程序中动态生成秘密,或者将秘密存储在iOS密钥链中,但再次可以在运行时使用MSF工具对其进行逆向工程。
可能的解决方案-
最好的方法是使用移动应用程序认证服务来保护移动应用程序和API服务器之间的连接,这将在运行时保证您的应用程序不会被中间人攻击,不会被篡改,不会在根设备或监狱破解设备上运行,并且与上传到应用程序商店的原始应用程序相同。通过使用集成在App中的SDK和在云中运行的服务,可以在后台完成此操作,而不会影响用户体验。
有了这个保证,我们不再需要在移动应用程序中存储用于身份验证、真实性和完整性目的的秘密,因此现在可以将对应用程序中的第三方服务的任何访问委派给API服务器,该服务器将能够更好地保护访问第三方服务的所有必要秘密,比如将它们存储在保险库中。
您可以在Approov(我在这里工作)中找到一个移动应用程序认证服务,该服务为包括iOS在内的多个平台提供SDK。集成还需要在API服务器代码中进行一次小检查,以验证JWT令牌。为了使API服务器能够决定为哪些请求提供服务以及拒绝哪些请求,此检查是必需的。
https://stackoverflow.com/questions/53512512
复制相似问题