如何强制iOS MapKit在其所有通信中使用HTTPS?
在我的应用程序中嵌入地图会导致生成许多HTTP请求,其形式如下:如何强制iOS MapKit在其所有通信中使用HTTPS?,ios,security,mapkit,man-in-the-middle,interception,Ios,Security,Mapkit,Man In The Middle,Interception,在我的应用程序中嵌入地图会导致生成许多HTTP请求,其形式如下: http://gspe19.ls.apple.com/tile.vf?flags=1&style=1&size=2&scale=0&v=99999999&z=99&x=9999&y=9999&checksum=1&sid=999999&accessKey=XXXXXX 这是在地图上滚动时显示的平铺数据。然而,HTTP的使用是一个信息泄露问题——任何在
http://gspe19.ls.apple.com/tile.vf?flags=1&style=1&size=2&scale=0&v=99999999&z=99&x=9999&y=9999&checksum=1&sid=999999&accessKey=XXXXXX
这是在地图上滚动时显示的平铺数据。然而,HTTP的使用是一个信息泄露问题——任何在网络上偷听的人都可以识别你在看什么,并且可能中间人攻击数据以向你提供错误信息或试图触发bug
有没有办法强制MapKit通过HTTPS发送这些请求?API文档对此并不清楚。这似乎有点过分,但您可以完全替换地图内容以使用您自己的服务器,这样它就不会与苹果服务器通信以加载地图数据
NSString *template = @"https://c.tile.openstreetmap.org/{z}/{x}/{y}.png";
overlay = [[MKTileOverlay alloc] initWithURLTemplate:template];
overlay.canReplaceMapContent = YES;
[map addOverlay:overlay level:MKOverlayLevelAboveLabels];
您还可以测试
MKMapSnapshotter
是否也不安全。如果不是,您可以在实现loadTileAtPath:result:
的MKTileOverlay
子类中使用它 将此报告给苹果公司。这可能是只有苹果才能解决的问题。我也想找到一个应用解决方案,因为任何解决方案都可能只适用于未来的iOS版本。除非它从map API完全接收到这些URL,否则它可能只是对API响应的修改。