Защитите корпоративный IPA-файл IOS, предотвращая прямые загрузки - PullRequest
0 голосов
/ 20 декабря 2018

Эта компания, с которой я работаю, хотела иметь собственное приложение IOS, а не распространять его через общий магазин приложений.Поэтому я создал простую HTML-страницу с кнопкой для загрузки приложения на iPhone пользователя.эта кнопка содержит путь к файлу ".plist"

itms-services://?action=download-manifest&url=https://url-to-plist.plist

, а внутри ".plist" у нас есть фактический URL-адрес файла ".ipa".

.... <dict>
       <key>kind</key>
       <string>software-package</string>
       <key>url</key>
       <string>https://url-to-ipa.ipa</string>
      </dict> ....

Все работает нормально, и они используют это уже более года.Но теперь их беспокоит то, что этот файл ".ipa" можно загрузить на компьютер напрямую, получив фактический URL из файла ".plist".Хорошо, если вы щелкнете правой кнопкой мыши по кнопке на этой html-странице или «осмотрите элементы», вы можете просто получить URL-адрес файла «.plist».Поскольку это корпоративное приложение, оно содержит некоторую конфиденциальную информацию, такую ​​как IP-адреса сервера компании и номера портов, и они не хотят, чтобы кто-либо сам имел файл .ipa.

Итак, сначала я попытался запретить доступ к этому файлу ".plist", заблокировав расширение, а затем скрыв каталог через файл web.config

<security>
   <requestFiltering>
     <fileExtensions applyToWebDAV="false">
      <add fileExtension=".plist" allowed="false" />
     </fileExtensions>
   </requestFiltering>
</security>


<security>
  <requestFiltering>
    <hiddenSegments>
      <add segment="folderName"/>
    </hiddenSegments>
  </requestFiltering>
</security>

, но в обоих случаях загрузка происходилаКнопка также перестала работать, поскольку айфоны напрямую вызывают файл «.plist» по его URL-адресу, а не по пути к каталогу.

itms-services://?action=download-manifest&url=https://url-to-plist.plist

Кроме этого, мое следующее решение - разрешить доступ к странице только пользователям Iphone, как в здесь , чтобы минимизировать проблему.

Каков будет правильный подход?Можно ли сделать то, что я пытаюсь сделать здесь?

...