Implementando un entorno de pruebas de seguridad para iOS

Mientras liberan la nueva versión de DVIA, he tenido un interesante trabajo compilándola por mi misma, dado que desde XCode 7 es mandatorio que todas las apps que tengan versiones para el Apple Watch usen bitcode en todas sus librerías.

Esta solución aplica si tienes cuenta de desarrollador y clonando localmente el repositorio de la aplicación (https://github.com/prateek147/DVIA), tu cuenta reemplazará la existente en el proyecto, deja que XCode resuelva los issues de firmas y de capacidades de las aplicaciones. Activa las capacidades que no aparezcan activas por defecto, este proyecto requiere In-app purchase y App groups.

Hay que renombrar el Bundle Identifier porque el original obviamente ya está tomado, mi recomendación es añadirle simplemente un sufijo de al menos tres letras a “dvia” algo así como “dviaxyz”.  Esto implica actualizarlo en todos los Target y en todos los info.plist

Hay que crear un grupo en las aplicaciones que tienes en tu cuenta para que coincida con el nuevo Bundle Identifier y seleccionar ese grupo en Capabilities App groups tanto en el target principal como en el del Apple Watch.

Las librerías de Parse arrojaron error por no tener bitcode, así que descargué una nueva versión (1.11.0) y reemplacé Parse.Framework y Bolts.Framework

Una forma de resolver las restantes es recurriendo a Cocoapods, tras un proceso de detectar una por una las faltantes, logré resolver dos más con esta configuración.

     use_frameworks!
     source 'https://github.com/CocoaPods/Specs.git'
     platform :ios, '9.1'
     workspace 'DamnVulnerableIOSApp'
     pod 'GoogleAnalytics', '~> 3.14'
     pod 'Realm', '~> 0.97'

Después de instalar arroja estos errores, básicamente se resuelven haciendo lo que el mensaje dice, agregando $(inherited) en los targets Debug y Release.

[!] The `DamnVulnerableIOSApp [Debug]` target overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The `DamnVulnerableIOSApp [Release]` target overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Target Support Files/Pods/Pods.release.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

Para el caso de couchbase-lite no se pudo con Cocoapods porque todavía están entregando la versión sin bitcode, así que cloné su repositorio de git://github.com/couchbase/couchbase-lite-ios.git usando Source Tree con la opción de Recursive activa para que baje algunas librerías adicionales en la carpeta Vendor.

Como indican en sus instrucciones, abrí el proyecto, seleccioné el Scheme “Continuous iOS”, le hice “Archive”, lo abrí en finder y tras abrir el paquete busqué el archivo CouchbaseLite.framework y lo reemplacé donde ya había descargado la librería originalmente sin bitcode. Procedí a agregarlo al proyecto y listo. Fin de los errores de compilación.

Ahora viene comenzar a usar la DVIA. Tengan en cuenta que iOS ya no soporta links en las aplicaciones sin https:// a menos que se desactiven ciertas características de seguridad de transporte en el info.plist, agregando lo siguiente.

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

Más detalle sobre lo que esto hace AQUÍ y porque no se recomienda para una aplicación real, e información sobre Apple Transport Security. Otros cambios de seguridad en iOS 9 que pueden afectar la funcionalidad de DVIA (que no he revisado aún) AQUÍ

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s