我想创建一个静态库来执行一些安全敏感操作。对我来说重要的是其他使用我的静态库的应用程序不能访问静态库的数据。
实际上,重要的是我在运行时保存在磁盘和内存中的数据都不能通过主机应用程序访问。所以我的问题是如何为静态库提供一个单独的沙箱,以便主机应用程序无法访问这些信息。
我知道有一些安全敏感的库有 .a
文件,我想知道它们如何为其应用程序提供安全性。以下是 paypal
iOS SDK 的链接:
https://github.com/paypal/PayPal-iOS-SDK
更新
根据下面的开发人员链接,我们可以在授权文件中使用沙盒 key 来启用沙盒。 它说 iOS 应用程序在默认情况下是沙盒的。 但是 iOS 静态库呢?他们是否也被沙盒化了?如果不是,我们如何对其进行沙箱处理?
更新
在 Android 操作系统中,当您开发项目库时,您可以在该项目的 manifest
中定义一个标记,以强制 Android 操作系统将库代码运行到单独的进程中(顺便说一下宿主进程无法访问库进程的运行时内存)。所以我认为我们也应该在 iOS 上为这种行为提供等效的选项。
更新
请注意,即使在运行时,我们也想保护主机应用程序的数据。关于通过反射访问 UI 元素数据的大问题之一。假设有人在 Paypal SDK 中输入卡数据,主机可以通过反射访问输入的数据。然后主机应用程序的开发人员可以访问所有卡信息及其身份验证数据,并将它们用于他们的用途。
最佳答案
库和框架属于托管应用程序。特别是一个static lib的代码都包含在app的binary中,没有分离。您也不能为库创建单独的沙箱。
您的静态库可以通过使用对称 key 加密磁盘上的文件来保护其数据。但是攻击者可能会从您的库中提取 key 并解密数据。
关于ios - ios cocoa touch静态库的独立沙箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40591498/