ios - 防止 NSURLProtocol 实现读取 URL

标签 ios nsurlconnection nsurlprotocol

我们开发了一个 iOS 框架,可以分发给其他开发者,在他们的应用中使用,并利用我们提供的一些服务。它效果很好(体外)。但是,因为方式 URL Loading System在 iOS 中工作,只需几行代码,我们所有的 URL 都将对每个开发人员的肉眼可见,包括我们所珍视的所有 HTTPS URL。

我知道默默无闻的安全性从来都不是一个好主意(被 HTTPS 的常见误解所掩盖,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)

P.S.:我清楚地记得有一次我试图更改与 AVPlayer 相关的一些 url 连接的结果以创建自定义 DRM 并且遇到了一些不寻常的事实的数据连接是由 NSURLProtocol 触发的!会不会是线索?!

最佳答案

如果你阻止 NSURLProtocol.registerClass,你会破坏很多有用的代码。

尝试隐藏您的 URL 是徒劳的。如果有人想对您的 API 进行逆向工程,他们会这样做。

关于ios - 防止 NSURLProtocol 实现读取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34721631/

相关文章:

android - 在 Cordova/PhoneGap 中生成 iOS 和 Android 图标

ios - 清除 NSURLConnection 缓存

ios - 如何使用 NSURLProtocol 模拟 AJAX 调用?

cocoa - 什么是 NSAboutURL 协议(protocol)类

Swift - 记录 mac 应用程序中的所有请求

iphone - 如何使 subview 显示在键盘顶部?

ios - 在自定义图像上叠加 GPS 路径

iphone - 录制iphone时视频放大和缩小

带 cookie 的 iPhone NSData/NSUrl

ios - NSURLConnection延迟导致没有图片的空UItableViewCell