La sécurité est un aspect clé du développement logiciel. Presque toutes les applications mobiles traitent des informations utilisateur ou communiquent avec un serveur distant. Même si la sécurité s’est améliorée de façon spectaculaire au cours des dernières décennies, le sujet reste chaudement débattu..
Dans cet article, je voudrais souligner un certain nombre de sujets liés à la sécurité et au développement mobile. En cours de route, je vais aborder un certain nombre de pratiques recommandées et de suggestions pouvant vous être utiles pour sécuriser les applications que vous écrivez..
La sécurité est relative. Les exploits de sécurité sont découverts et corrigés régulièrement. Rien n'est parfait. Cela dit, vous pouvez prendre diverses mesures pour améliorer la sécurité de vos applications mobiles. Un cambrioleur est moins tenté de s'introduire dans un bâtiment entouré d'une clôture électrique que celui qui ne l'est pas.
Certains développeurs oublient le fait que les utilisateurs de leurs applications leur font confiance pour leurs informations. En tant que développeur, vous êtes responsable de la sécurité de ces informations. Peu importe ce que cette information est. Bien que l’information puisse paraître sans importance pour vous, elle est importante pour l’utilisateur.
Apple prend la sécurité et la confidentialité très au sérieux. HealthKit est un bel exemple de l'engagement d'Apple à protéger la vie privée de ses utilisateurs. L'utilisateur décide à quelles données de santé une application a accès. Bien que l'application puisse demander l'accès aux données de santé de l'utilisateur, HealthKit ne lui indique pas les données auxquelles il a accès. En d’autres termes, Apple considère que le statut d’autorisation d’une application est une information sensible qu’elle ne devrait pas connaître..
Avant de décider comment et où stocker une donnée particulière, vous devez vous demander si vous devez stocker ces données en premier lieu. Est-il possible, par exemple, de conserver les données en mémoire au lieu de les écrire sur le disque ou de les envoyer à un serveur distant? Cela peut grandement simplifier l'architecture de votre application et améliorer sa sécurité..
Si vous décidez que stocker les données localement est votre seule option, vous devez décider de l'emplacement où vous envisagez de stocker ces données. Pour les informations sensibles, telles que les informations d'identification, le trousseau est votre meilleure option. Cela n’est faisable que pour de petites quantités de données pour lesquelles votre application n’a pas besoin d’un accès fréquent à.
Les données doivent-elles être sauvegardées sur iCloud ou iTunes? Si ce n’est pas le cas, vous pouvez envisager de stocker les données dans le dossier Les caches répertoire du sandbox de l'application. Ce répertoire n'est pas sauvegardé sur iCloud et iTunes. Pourquoi est-ce important? Les données qui n'existent pas ne peuvent pas être compromises.
Le système par défaut, accessible par le biais du NSUserDefaults
classe, est un moyen rapide et pratique pour stocker des morceaux de données. Malheureusement, le système par défaut est souvent utilisé de manière excessive par les développeurs. Il arrive trop souvent que des informations sensibles, telles que des identifiants et des jetons d'accès, soient stockées dans le système par défaut..
Le trousseau de clés du système est un meilleur emplacement pour stocker de petites quantités d'informations sensibles. Comme son nom l'indique, il a été conçu dans un souci de sécurité et existe depuis de très nombreuses années. Même si le trousseau est géré par le système d'exploitation, par défaut, les autres applications n'ont pas accès aux éléments que votre application stocke dans le trousseau..
Il est vrai que l'interface permettant d'accéder aux services du trousseau est archaïque. Heureusement, il existe plusieurs excellentes bibliothèques qui surmontent cet obstacle. Lockbox, par exemple, est une bibliothèque légère permettant d’interagir avec les services de trousseau du système. L'interface de Lockbox est facile à utiliser et à comprendre.
Il est tentant de stocker des clés, des jetons et même des identifiants dans des emplacements facilement accessibles, tels que celui de la cible. Info.plist ou un fichier JSON dans le bundle de votre application. La vérité est que l'extraction de ces informations à partir d'une application téléchargée depuis l'App Store est un jeu d'enfant. En stockant un jeton d’API pour un service Web dans le répertoire de votre application Info.plist, d'autres développeurs peuvent le trouver et l'utiliser.
La sécurité et la confidentialité sont à l’ordre du jour d’Apple depuis de nombreuses années et, avec d’autres acteurs majeurs, Apple a décidé de prêcher par l’exemple. Lors de la WWDC de l’année dernière, la société a introduit Sécurité du transport d'applications.
Avec App Transport Security, Apple vise à améliorer la sécurité de ses plates-formes et de leurs applications. Peu importe combien Apple investit dans la sécurisation de ses systèmes d'exploitation, un système est aussi sécurisé que son composant le plus faible et inclut des applications tierces.
App Transport Security oblige les applications à envoyer des requêtes réseau via une connexion sécurisée. Si App Transport Security est activé pour une application, les demandes réseau sont envoyées via HTTPS par défaut. Apple souligne son engagement en matière de sécurité et de confidentialité en activant automatiquement App Transport Security pour les applications construites avec Xcode 7.
Vous pouvez en savoir plus sur App Transport Security sur Envato Tuts +. Bien qu'il soit facile de désactiver App Transport Security, gardez à l'esprit que l'un des objectifs d'App Transport Security est de permettre aux développeurs de prendre en compte le comportement de leurs applications sur le réseau..
Pratiquement toutes les applications mobiles utilisent le réseau. Cela signifie que les personnes ayant de mauvaises intentions se concentrent sur cet aspect de la sécurité des applications. La mise en réseau est un sujet complexe et les applications s'appuient sur un ensemble de technologies pour récupérer les données qui les intéressent..
En tant que développeur, il est essentiel de respecter un certain nombre de meilleures pratiques. Nous avons déjà évoqué App Transport Security et les règles appliquées par cette nouvelle technologie. Cela ne s'arrête pas là, cependant. Vous pouvez également vous intéresser à des rubriques plus avancées, telles que l'identification des certificats pour vous assurer que le serveur avec lequel votre application communique n'est pas frauduleux. Les bibliothèques modernes, telles que Alamofire, facilitent grandement cette tâche..
La plupart des applications utilisent ou stockent des informations utilisateur sensibles. Les appareils mobiles ont accès à un large éventail d'informations utilisateur souvent personnelles et sensibles, telles que l'emplacement, le carnet d'adresses et les informations relatives à la santé..
Comme je l'ai mentionné précédemment dans cet article, la première question que vous devez vous poser est de savoir si vous devez accéder à ces informations et, plus important encore, si vous devez stocker ces informations..
Si vous pouvez accéder aux informations dont vous avez besoin via un framework natif, tel que HealthKit, il n'est pas nécessaire de dupliquer et de stocker ces informations. Par exemple, Apple rejettera les applications qui stockent les informations de santé de l'utilisateur dans iCloud..
En supposant que vous ayez besoin de stocker des informations sensibles, demandez-vous si ces informations doivent être conservées en local. Est-il nécessaire d'envoyer des informations sensibles à un serveur distant?
Le stockage d'informations sensibles est accompagné d'un avertissement. Si le serveur sur lequel vous stockez des informations sensibles est compromis, vous pouvez être tenu responsable de l'exposition de ces informations à des tiers..
La sécurité en ligne a énormément évolué au cours des dernières décennies. Les protocoles d'authentification, tels que OAuth, ont renforcé la sécurité et la transparence de la communication avec les services Web..
Si votre application a besoin de communiquer avec un serveur sécurisé, réfléchissez à la façon dont votre application gère les informations d'identification. Est-ce qu'il les garde en mémoire ou les stocke sur le disque? Si vous demandez au nom d'utilisateur et au mot de passe de l'utilisateur de récupérer un jeton d'accès, il est préférable de stocker ce jeton d'accès. Mais devriez-vous également stocker le nom d'utilisateur et le mot de passe? La réponse est non dans la plupart des situations.
Pour les applications traitant des données très sensibles, telles que des informations de santé ou financières, il peut même être préférable de conserver le jeton d'accès en mémoire et non de le stocker sur disque. Le garder en mémoire le rend beaucoup plus sûr et rend votre application moins pénible. De toute façon, le jeton d'accès a une courte durée de vie.
La sécurité d'une application est un aspect fondamental du développement logiciel. Déterminez les données auxquelles votre application a accès et si elle doit stocker ces informations. Si vous décidez de stocker des informations sensibles, tenez compte des conseils et des meilleures pratiques ci-dessus. Assurez-vous de traiter les informations de l'utilisateur avec respect. Même si l'information peut sembler sans importance pour vous, elle est importante pour l'utilisateur.