|
Sécurité des Web Services |
Débuté par Cedric, 22 nov. 2014 13:03 - 4 réponses |
| |
| | | |
|
| |
Posté le 22 novembre 2014 - 13:03 |
Bonjour à tous,
Je me posait une question concernant la sécurité des Web Services. J'ai recherché ici et sur Google me ne trouve pas vraiment de réponse.
Savez-vous comment on peut gérer l'aspect sécurité des web services WinDev ? Au niveau de l'échange de données via le web service, vu que l'échange est en XML il passe en clair sur le net, je pensais déjà y ajouter une couche de cryptage mais ceci dit, est-ce suffisant ? Une personne voyant passer des paquets vers mon web service, pourrait commencer à l'utiliser aussi, il me semble. Est-ce possible d'y mettre une authentification qui serait cryptée ?
Si vous connaissiez d'autres aspects de cette sécurité, je serais bien intéressé.
Merci d'avance,
Cédric |
| |
| |
| | | |
|
| | |
| |
Posté le 23 novembre 2014 - 16:25 |
Bonjour Cédric
voici un exemple de sécurité, celle que j'utilise dans le webservice de type REST de WXReplication...
Pour CHAQUE communication entre client et webservice:
- Le client prépare le paquet à envoyer (une chaîne pas XML, mais ca pourrait du xml sans rien changer) - le client encrypte la chaine - le client envoie la chaine au webservice - le webservice recoit la chaine - le webservice décrypte la chaine - le webservice traite la chaine et ca repart dans l'autre sens...
Ca, c'est un premier niveau de sécurité, au niveau du contenu
Ensuite, il y a la sécurité de la session, pour éviter des attaques de type "Man in the Middle"...
- Au début de chaque session, le client envoit une demande de connexion (encryptée, comme tous les autres paquets) - Cette demande contient un identifiant unique (un GUID dans le cas évoqué), en plus des identifiants du clients lui même - le serveur vérifie d'abord que l'identifiant unique n'a jamais été utilisé auparavant, ce qui empêche tout hackeur de simplement renvoyer le même paquet. - il vérifie ensuite les identifiants utilisateur (est ce qu'il a le droit de se connecter) - Le serveur répond en fonction de tout ca avec un "Connexion établie ou refusée" (ca aussi encrypté, bien sur) - Ensuite, pendant toute la durée de la session, chaque paquet envoyé par le client contient en plus un numéro de paquet (1 est la demande de connexion, puis 2,3,4...) et le serveur vérifie que la séquence est correcte. - A la fin, le client fait une demande de déconnexion (et dans tous les cas le serveur gère un time out)
Bien sur, ce système est bon pour une utilisation INTERNE (cad ou TU écris le client ET le webservice)... Si tu dois fournir toutes ces infos (mode d'encryption, clé, etc) à des gens externes pour qu'ils utilisent ton webservice, le problème se présente différemment, et c'est encore pire si c'est un webservice PUBLIC...
Tous le système que j'ai décrit plus haut est disponible dans le projet open source WXReplication sur mon site, si tu veux l'étudier.
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
NOUVEAU: WXReplication, votre système de réplication open source est disponible sur mon site web !!! WXShowroom.com : Montrez vos projets ! Plus d'information sur http://fabriceharari.com
On 11/22/2014 7:03 AM, Cedric wrote:
Bonjour à tous,
Je me posait une question concernant la sécurité des Web Services. J'ai recherché ici et sur Google me ne trouve pas vraiment de réponse.
Savez-vous comment on peut gérer l'aspect sécurité des web services WinDev ? Au niveau de l'échange de données via le web service, vu que l'échange est en XML il passe en clair sur le net, je pensais déjà y ajouter une couche de cryptage mais ceci dit, est-ce suffisant ? Une personne voyant passer des paquets vers mon web service, pourrait commencer à l'utiliser aussi, il me semble. Est-ce possible d'y mettre une authentification qui serait cryptée ?
Si vous connaissiez d'autres aspects de cette sécurité, je serais bien intéressé.
Merci d'avance,
Cédric |
| |
| |
| | | |
|
| | |
| |
Posté le 23 novembre 2014 - 21:13 |
Bonjour Fabrice,
Merci pour la réponse. Je pensai bien à ce style de communication mais comme c'est une première pour moi je suis content d'avoir eu confirmation et je vais pouvoir avancer dans le bon sens. Merci pour ton projet open source, je vais le regarder.
Je pense aussi ajouter une clé d'encryptions qui change pour chaque communication et qui est fournie par le serveur lors de la première demande.
La seule crainte que j'ai est plutôt située au niveau des ressources qui seront utilisées, surtout sur mobile mais je suppose que ça ira bien.
Merci bien
Cédric |
| |
| |
| | | |
|
| | |
| |
Posté le 23 novembre 2014 - 22:37 |
Re bonjour Cédric
ajouter une clé fournie par le serveur ne sert à rien, à mon avis...
Si quelqu'un est capable de décrypter ton message initial, il aura accès à la clé secondaire et elle ne sert à rien...
S'il n'en est pas capable, il n'y aura pas accès et elle ne sert à arien
Par contre, tu peux utiliser une clé calculée des deux cotés...
Par exemple, tu commence ton premier paquet par une suite de caractères randoms que tu envoie au serveur (ou au client, s'il est authentifié par le premier paquet)...
Puis, le client ET le serveur CALCULENT une clé d'encryption basée sur cette valeur...
Dans ce cas, il faut que le pirate retrouve ton algo de calcul de clé pour pouvoir décrypter, il n'y a pas d'envoi de la valeur de la clé.
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
NOUVEAU: WXReplication, votre système de réplication open source est disponible sur mon site web !!! WXShowroom.com : Montrez vos projets ! Plus d'information sur http://fabriceharari.com
On 11/23/2014 3:13 PM, Cedric wrote:
Bonjour Fabrice,
Merci pour la réponse. Je pensai bien à ce style de communication mais comme c'est une première pour moi je suis content d'avoir eu confirmation et je vais pouvoir avancer dans le bon sens. Merci pour ton projet open source, je vais le regarder.
Je pense aussi ajouter une clé d'encryptions qui change pour chaque communication et qui est fournie par le serveur lors de la première demande.
La seule crainte que j'ai est plutôt située au niveau des ressources qui seront utilisées, surtout sur mobile mais je suppose que ça ira bien.
Merci bien
Cédric |
| |
| |
| | | |
|
| | |
| |
Posté le 25 novembre 2014 - 23:17 |
Fabrice,
Merci d'être revenu sur le sujet. Effectivement une clé calculée, c'est encore mieux...
Je vais certainement aller dans ce sens.
Merci bien
Cédric |
| |
| |
| | | |
|
| | | | |
| | |
|