IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Android Discussion :

sécuriser webService JSON


Sujet :

API standards et tierces Android

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 93
    Points : 54
    Points
    54
    Par défaut sécuriser webService JSON
    Bonjour à tous,

    Je dois créer une application android qui communiquera avec une base de données mysql sur un serveur en ligne.
    J'utilise donc un webservice REST qui me renvoie du JSON.

    Jusque là tous va fonctionne bien le problème c'est que je passe à ce webservice une requête sql en POST ce qui veut dire que si quelqu'un passe une requête également il pourra récupérer toutes les données qui contiennent des adresses mail par exemple. Je dois donc sécuriser ce webservice.

    J'ai pensé à 2 solutions, identifier l'appareil qui envoie la requête avec un identifiant unique de l'appareil Android (Settings.Secure.ANDROID_ID). Ou alors ajouter dans le code source un mot de passe qui permettrait d'identifier l'application qui fait la requête. Seulement je ne sais pas si il est possible pour une personne mal intentionné de récupérer ce mot de passe stocké en dure dans le code.

    Sinon auriez vous d'autres solutions à me proposer ? Par exemple chiffré le résultat de la requête ou je ne sais quoi ?

    Merci de m'avoir lu et de m'apporter une réponse si vous pensez en avoir les compétences

  2. #2
    Membre actif
    Homme Profil pro
    Consultant BigData
    Inscrit en
    Juillet 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant BigData

    Informations forums :
    Inscription : Juillet 2009
    Messages : 129
    Points : 280
    Points
    280
    Par défaut
    Stocker un mot de passe en dur dans le code est de toute façon une mauvaise façon de faire Le mot de passe ne doit jamais être visible

    Ce que tu peux faire, c'est :
    - Passer ton service en HTTPS si ce n'est pas déjà fait. ça ne va pas résoudre tous tes problèmes de sécurité, mais déjà une partie.
    - Authentifie tes utilisateurs. Comme cela, si un jeton d'authentification est envoyé à travers ton service, tu peux contrôler ce que l'utilisateur à le droit de voir ou non avant de lui envoyer une réponse.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 93
    Points : 54
    Points
    54
    Par défaut
    Le https n'est pas encore fait mais c'est prévu pour la suite des opérations
    Sinon pour l'identification par mot de passe ce n'est pas possible, l'utilisateur n'a pas à saisir des informations pour récupérer ces données (précisé dans le cahier des charges). Mais si le mot de passe est en dur dans le code, personne ne pourra le lire si ?
    Petite précision également, l'appli ne sera pas disponible sur le market.

  4. #4
    Membre actif
    Homme Profil pro
    Consultant BigData
    Inscrit en
    Juillet 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant BigData

    Informations forums :
    Inscription : Juillet 2009
    Messages : 129
    Points : 280
    Points
    280
    Par défaut
    Si le mot de passe est précisé en dur dans l'application, alors il est récupérable en décompilant le code
    De plus, pour qu'un mot de passe soit un minimum sécurisé, il doit être changé "fréquemment"... Chose que tu ne pourras pas faire si tu mets le mot de passe en dur.

    Donc si je résume : les données doivent être sécurisées de sorte que seuls certaines personnes aient accès à certaines données, mais il n'est pas possible de prévoir un système pour déterminer qui se connecte (principe d'authentification) ?

    Si ton backend est une API, tu peux aussi prévoir que en backend, un clé d'application soit générée pour chaque client et que cette clé puisse être obtenue via un appel sur le serveur nécessitant un process de validation. Ensuite, chaque appel comprendra une référence à cette clé afin de valider que l'utilisateur à les droits. C'est un peu plus complexe à mettre en oeuvre, mais ça permettrait de sécuriser un minimum tes données.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 93
    Points : 54
    Points
    54
    Par défaut
    Le principe n'est pas réellement ca, en fait l'application ne sera pas distribué sur le store et seul quelques appareils disposeront de cette application. Et les données doivent être récupérer uniquement de ces appareils. C'est pour ca que j'avais pensé à un identifiant unique pour chaque appareil. C'est cet identifiant qui réaliserai l'authentification en fait.

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Oui mais cet identifiant:
    1. Il faut l'obtenir (donc un code sur la bécane qui va fournir l'identifiant au webservice pour enregistrement... Cette partie là reste toujours problématique).
    2. L'identifiant "Android" peut changer (le miens change à chaque remise à 0 du terminal).

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 93
    Points : 54
    Points
    54
    Par défaut
    Les tablettes sur lesquelles seront installés les applications ne seront sans doute jamais remis à zéro donc je pense que c'est la manière la plus simple et la plus rapide de sécuriser le webService.
    Au pire on peut pas récupérer l'adresse mac d'un appareil android ?

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Jamais remises à zero ? donc jamais mises à jour ?

    Comme je l'ai dis, reste la transmission de cet identifiant au service ... Comment prouver qu'une personne de confiance "rajoute" cet identifiant et non un plaisantin ?

    Ensuite, pour l'adresse MAC, oui on peut l'utiliser, comme on peut la modifier

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 93
    Points : 54
    Points
    54
    Par défaut
    Si, les appareils pourront êtres mis à jour mais ceux ci dispose déjà du dernier android (4.4) et comme l'application a une durée de vie limité si on doit faire une mise à jour on changera les identifiants, ca ne sera pas à faire bien souvent donc ca pose pas vraiment de soucis.
    Pour ajouter les identifiants dans le back office, il y aura un service d'identification, donc une personne sans le login ni mot de passe de ce service ne pourra pas ajouter d'identifiants. Ca devrait suffire à sécuriser non ?
    Oui l'adresse MAC est modifiable mais dans ce cas ca voudrait dire que la personne à trouvé l'url du web services et qu'il connait l'adresse MAC d'un appareil qui se connecte sur ce web service, ce qui à tout de même peut de chance d'arriver, mais pas impossible je te l'accorde

  10. #10
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Un article intéressant sur la question :
    http://www.thebuzzmedia.com/designin...uthentication/

    Pour résumer :
    - On utilise une clé API pour identifier le client (ce que tu fait +/- avec Settings.Secure.ANDROID_ID)
    - On signe la requête envoyée avec un ensemble de données (uniques) pour s'assurer que le client qui envoi au serveur est bien celui qu'il prétend être.

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 93
    Points : 54
    Points
    54
    Par défaut
    Ca marche je vais faire un truc comme ca alors
    Merci à vous trois !!!

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut sécurisé web service JSON
    Citation Envoyé par grunk Voir le message
    Un article intéressant sur la question :
    http://www.thebuzzmedia.com/designin...uthentication/

    Pour résumer :
    - On utilise une clé API pour identifier le client (ce que tu fait +/- avec Settings.Secure.ANDROID_ID)
    - On signe la requête envoyée avec un ensemble de données (uniques) pour s'assurer que le client qui envoi au serveur est bien celui qu'il prétend être.
    Puis-je avoir un peu plus d'explication sur ça. merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Windows Phone 8] Récupérer les données depuis un webservice Json toutes les 30 secondes
    Par arrakis42 dans le forum Windows Phone
    Réponses: 7
    Dernier message: 25/08/2013, 10h47
  2. Logiciel gratuit pour tester des Webservice Json (rest)
    Par thierryler dans le forum Services Web
    Réponses: 6
    Dernier message: 19/02/2013, 20h54
  3. webService JSON : problème lors de l'appel depuis un autre site
    Par Pat_AfterMoon dans le forum Services Web
    Réponses: 1
    Dernier message: 22/11/2011, 01h22
  4. Webservices - JSON - JQUERY
    Par aurelien.tournier dans le forum Services Web
    Réponses: 3
    Dernier message: 07/11/2010, 11h32
  5. WebService JSON retourne du XML
    Par d1g-2-d1g dans le forum Services Web
    Réponses: 5
    Dernier message: 14/11/2009, 00h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo