gpt4 book ai didi

ios - 如何在IOS中实现安全的应用程序间消息传递

转载 作者:行者123 更新时间:2023-11-29 03:13:03 26 4
gpt4 key购买 nike

所以我正在寻找一种在两个应用程序之间传递数据的安全方式(尝试为 IOS 应用程序实现安全的 OAuth 提供程序)。这是我对安全的定义和一些额外的假设/要求:

  1. 我希望应用程序 A 调用应用程序 B 并向其传递 token TokenA,然后应用程序 B 根据此 token 获取一些结果,并将结果返回给应用程序 A。假设有一个名为应用程序 C 的恶意应用程序,我想确保应用 C 无法拦截应用 A 和 B 之间的任何消息。
  2. 假设TokenA是应用程序C可以获得的一些公共(public)信息。我想确保应用 B 不会响应使用 TokenA 的请求,除非它来自应用 A。
  3. 假设应用 B 实际上是一个“服务提供商”,当应用 A 注册使用该服务时,应用 A 可以向应用 B 提供一些信息(例如 IOS 包 ID)。
  4. 安全消息传递方法不得要求使用越狱手机。
  5. 假设应用 C 可以在应用 A 和 B 之前或之后安装。

最初,我考虑过使用一些基于方案的方法,但这并不安全,因为如果应用程序 C 可以 register for the same scheme作为A和B,然后拦截消息(违反要求1)。

检查重复意图也是不够的,因为如果用户没有安装应用程序 A,攻击者可以注册应用程序 A 的方案并绕过此检查(违反要求 2)。

我查看了 Facebook 的 IOS OAuth,他们似乎要求应用在向 Facebook 注册时输入其“bundle ID”。我非常肯定 Facebook 在某种检查中使用了这个 bundle ID,但不确定是什么。

感谢任何帮助。

最佳答案

除了 url schemes 之外,没有其他方法可以让一个应用程序直接调用另一个应用程序,因此如果您希望应用程序 A 直接调用应用程序,您别无选择,只能使用这种方法,然后找到一种让您满意的方法B.

如果您绝对不能使用 url 方案,那么唯一的其他选择就是一些复杂的机制,例如应用程序 A 和应用程序 B 通过远程服务器间接通信。

当应用程序在设备上调用 Facebook 时,该应用程序已注册并获取,然后在其中硬编码了一个 facebook token ,该 token 可能以某种方式用于确保身份验证 - 因此必须有 3 个实体在进行(应用程序、Facebook 应用程序和 Facebook 服务器)。

但是我认为,如果您将 url 方案与 key 存储结合使用,您可以使两个应用之间的数据共享安全 - 应用 A 将一些加密数据发布到 key 存储,然后通过 url 方案通知应用 B 它可用,然后应用 B 从 keystore 中检索它。

如果应用 A 和应用 B 知道如何加密数据,那么应用 C 是否知道那里有数据并可以访问它并不重要。 (实际上,我认为有一种使用钥匙串(keychain)的方法可以用来将应用程序 C 排除在外,甚至无法访问它,但目前没有该信息可以确认)。即使应用程序 C 可以访问钥匙串(keychain)中的数据,您肯定可以找到一种保护它的方法,以便应用程序 C 无法对其进行解码。

我会首先对 iOS 的钥匙串(keychain)进行大量研究,然后看看它能为您提供什么。

https://developer.apple.com/library/mac/documentation/security/conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html#//apple_ref/doc/uid/TP30000897-CH208-SW1

关于ios - 如何在IOS中实现安全的应用程序间消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com