Ios 关于自定义URL方案传输数据的方法

Ios 关于自定义URL方案传输数据的方法,ios,Ios,我知道自定义URL方案是如何工作的。基本上,我只需要在Info.plist中定义一个自定义URL方案,并按如下方式处理: func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { // here I only printout print("url host: \(String(

我知道自定义URL方案是如何工作的。基本上,我只需要在Info.plist中定义一个自定义URL方案,并按如下方式处理:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        // here I only printout
        print("url host: \(String(describing: url.host))")
        print("url path: \(url.path)")

        return true
    }
例如,如果我将url定义为
myapp://foo.com/bar
,上述函数将主机打印为
foo.com
,路径打印为
bar


我的问题是,如果说另一个应用打开自定义URL并使用
路径
来传输一些敏感信息,那么在两个应用之间传输数据是否是一种安全的方式呢。e、 g.
myapp://foo.com/sensetive_data
敏感\u数据是否会被我以外的其他应用程序捕获或泄漏?

我认为,如果您的敏感数据未加密,则不安全

要读取您的敏感数据,我只需卸载您的第二个应用程序,然后安装我自己的应用程序,注册与您相同的方案即可访问数据

因此,你可以:

  • 加密您的数据(所有限制均适用于加密使用)
  • 使用某种可用于从服务器检索敏感数据的令牌
编辑
对于加密,您可以使用安全框架:

,在自定义URL方案或通用链接中共享敏感数据是不安全的

可以使用相同的自定义URL方案注册两个应用程序,此时操作未定义将打开哪个应用程序,但假设您的应用程序已卸载,并且假冒应用程序已安装在设备中,则您的自定义URL方案将打开假冒应用程序,并且该应用程序可以轻松读取数据

在Universal link中,当您的应用程序未安装时,它将打开Safari,URL文件将包含完整路径,可以从那里复制

在我看来,在两个或多个应用程序之间共享敏感数据的最佳方式是使用

如果你开发了一系列应用程序,它们都依赖于同一个用户 机密,您可以使用访问组在用户之间安全地共享该机密 那些应用程序。例如,您可以共享凭据,以便进行日志记录 自动授予用户访问所有应用程序的权限 你的应用程序。这种共享不需要与或进行交互 来自用户的权限,但将共享限制为 由单个开发团队交付


Instagram、facebook正在使用自定义url模式传递数据,但我建议您对数据进行加密可能会有所帮助。因此,我需要在预期应用程序之间共享密钥,以便进行加密和解密?是的,这是最简单的方法。您建议使用对称密钥还是非对称密钥?这取决于数据的敏感度及其大小。但众所周知,非对称加密更难破解(对于相同的密钥大小),Info.plist中定义的URL值是否容易被外界暴露?在我的例子中,它是由不同团队构建的应用程序之间的数据共享。