Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何强制iOS MapKit在其所有通信中使用HTTPS?_Ios_Security_Mapkit_Man In The Middle_Interception - Fatal编程技术网

如何强制iOS MapKit在其所有通信中使用HTTPS?

如何强制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请求,其形式如下:

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响应的修改。