我们开发了一个 iOS 框架,将分发给其他开发人员,以便在他们的应用程序中使用并使用我们将提供的一些服务。它工作得很好(体外)。但是,由于URL 加载系统在 iOS 中的工作方式,只需几行代码,每个开发人员的肉眼都可以看到我们所有的 URL,包括我们珍视的所有 HTTPS url。
我知道默默无闻的安全从来都不是一个好主意(被普遍误解的 HTTPS 总是在客户端之外透明所掩盖)但我仍然有这个要求,以某种方式使我们的 URL 对实现开发人员不可见。
到目前为止,我已经考虑NSURLConnection
为我们的框架实现一个简单的替代方案,但考虑到 HTTPS 要求和所有内容,这似乎是一项艰巨的任务。
无论如何,我们可以阻止NSURLProtocol
注册更多课程或任何其他选项吗?
以下是一些有关如何NSURLProtocol
破坏您的安全性的示例代码:
class NetSniffer : NSURLProtocol {
override class func canInitWithRequest(request: NSURLRequest) -> Bool {
print("\(request.URL?.absoluteURL)")
return false
}
}
在你的application(_, didFinishLaunchingWithOptions:)-> Bool
:
NSURLProtocol.registerClass(NetSniffer)
PS:我清楚地记得有一次我试图改变一些与AVPlayer
创建自定义DRM相关的url连接的结果,并遇到了一些不寻常的事实,即没有一个数据连接是由NSURLProtocol
s触发的!这可能是一个线索?!