我们开发了一个iOS框架,将其分发给其他开发人员,以便在他们的应用程序中使用,并利用我们提供的一些服务。它非常有效(在体外)。但是,由于URL加载系统在iOS中的工作方式,使用几行代码,我们所有的URLs都将在每个开发人员的肉眼中可见,包括我们所珍视的所有HTTPS urls。
我知道匿名安全性从来不是一个好主意( 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触发的!会是线索吗?!
发布于 2016-01-13 04:39:15
好吧,我又一次对我自己的问题有了答案。解决办法其实很简单。幸运的是,NSURLSession提供的比我想象的更多。注册为NSURLProtocol的每个类都只影响defaultSession,如果您要创建一个新会话,则根据默认配置(而不是向其他开发人员公开I)创建一个新会话是安全的。但是,无论如何,我所做的是:
NSURLSessionConfiguration )获取defaultConfiguration的实例registeredProtocols)并逐个取消注册。NSURLSession。到目前为止,我还没有找到解决这个问题的方法,并从我的模块外部提取URL。
如果需要改进,请告诉我。
发布于 2016-01-11 13:27:27
如果阻止NSURLProtocol.registerClass,就会破坏许多有用的代码。
试图隐藏您的URL是徒劳的练习。如果有人想反向工程你的API,他们会这样做的。
https://stackoverflow.com/questions/34721631
复制相似问题