可以从外部代码访问自定义NSURLProtocol吗?

时间:2013-08-08 05:44:31

标签: ios objective-c security nsurlprotocol

我的应用程序注册了一个拦截一个特定URL的NSURLProtocol子类。该协议使用密钥回复请求。

@implementation PrivateURLProtocol

// ignore everything besides keyURL
+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
    return [request.URL isEqual:keyURL];
}

// respond with secret key
– startLoading
{
    NSURLResponse *response = [[NSURLResponse alloc] initWithURL:self.request.URL
            MIMEType:@"text/plain" expectedContentLength:-1 textEncodingName:nil];
    [self.client URLProtocol:self didReceiveResponse:response
            cacheStoragePolicy:NSURLCacheStorageNotAllowed];

    NSData *data = [@"Swordfish" dataUsingEncoding:NSUTF8StringEncoding];
    [self.client URLProtocol:self didLoadData:data];
    [self.client URLProtocolDidFinishLoading:self];
}

// boilerplate
– (void)stopLoading { }
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
    return request;
}

@end

只有我链接的代码和库应该能够看到密钥。有进取心的用户如何获得我的密钥?这样安全吗?

对于那些好奇的人来说,这是DRM设置的一部分。 AVPlayer将请求密钥,以便它可以播放加密媒体。

0 个答案:

没有答案