2016-07-05 55 views
4

嵌入在我的應用程序的映射導致產生的HTTP請求,以下形式:如何強制iOS MapKit爲其所有通信使用HTTPS?

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的使用是一個信息泄露問題 - 任何人在網絡上竊聽都可以識別你正在查看的地方,並且可能中間人攻擊數據,從而爲你提供不正確的信息或嘗試觸發錯誤。

有沒有辦法迫使MapKit通過HTTPS發送這些要求呢? API文檔對此尚不清楚。

+0

向Apple報告此事。這可能是蘋果公司可以解決的問題。 –

+0

我也想找到一個應用程序的解決方法,因爲任何修補程序大概只適用於未來的iOS版本。除非它完全從地圖API中接收這些URL,否則 - 可能只是在它們的最後一個API響應修改。 –

回答

1

這似乎有點像矯枉過正,但你可以完全替代的地圖內容使用自己的服務器,所以它不會跟蘋果的服務器加載地圖數據。

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子類中使用它。

相關問題