2016-07-05 8 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. Вероятно, это может быть только Apple. –

+0

Я хотел бы найти обходное решение для приложения, так как любое исправление предположительно применимо только к будущим версиям iOS. Если он не получит эти URL-адреса полностью из API карты, возможно - тогда это может быть просто модификация ответа API на их конце. –

ответ

1

Это похоже на перебор, но вы можете полностью заменить содержимое карты, чтобы использовать свой собственный сервер, чтобы он не разговаривал с сервером Apple для загрузки данных карты.

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 также небезопасно. Если это не так, вы можете использовать его в подклассе MKTileOverlay, который реализует loadTileAtPath:result:.

 Смежные вопросы

  • Нет связанных вопросов^_^