PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Sécurité des Web Services
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