2009-10-02 8 views
0

Mes clients peuvent poser des questions directement dans mon application (Windows Forms). L'application parle à un service Web qui stocke les messages dans un db sur mon serveur. Problème: Un concurrent décide de spammer mon service Web. Que puis-je faire pour éviter cela et y a-t-il un moyen cryptographique de le faire?Assistance clientèle via le service Web - comment sécuriser le service Web?

Les choses que je suis venu avec à ce jour sont:

  1. Masquer les informations WSDL donc un attaquant ne connaît pas l'interface de service Web. Analyser mon code ou renifler le trafic révélera rapidement cette information.

  2. Créez un jeton que je signe avec une clé publique stockée dans mon application. Le service Web peut tester de cette manière si le message a été envoyé par mon application. Eh bien en théorie au moins. Encore une fois, un attaquant pourrait extraire la clé publique de mon application et créer lui-même des messages valides.

Donc, je suis bloqué ici. Existe-t-il un moyen de le faire correctement et d'empêcher les attaques DOS sur mon service Web ou est-ce qu'un service Web est la mauvaise façon de le faire en général?

Merci à tous.

Répondre

0

Vous avez raison de mettre une clé privée dans votre application ne ralentira personne, peu importe comment vous l'obscurcir. L'obscurité n'est pas non plus sur vos métadonnées WS.

Probablement le meilleur moyen (si vous ne pouvez pas faire d'authentification) serait de limiter par IP (un commentaire par intervalle X). Gardez juste un dictionnaire en mémoire des adresses IP des clients et la dernière fois que vous avez vu un commentaire à partir de là, et rejetez les demandes rapidement si elles arrivent trop tôt. Cela nécessiterait au moins un gros DDOS pour causer des problèmes majeurs. Récoltez le dictionnaire pour les anciennes entrées toutes les heures pour l'empêcher de croître sans limite.

0

@nitzmahone a raison. Juste pour ajouter à ceci: Ceci n'est pas différent de quelqu'un qui spammerait un formulaire Web. Si cela vous inquiète, vous pouvez faire ce que font les formulaires Web (par exemple, le serveur envoie le jeton et l'image CAPTCHA, l'utilisateur décode le CAPTCHA, le jeton d'envoi de l'application cliente, le CAPTCHA décodé et la requête réelle).

Tout comme dans les applications Web, vous pouvez activer cette fonctionnalité uniquement si le trafic de certaines adresses IP dépasse un certain seuil.

Questions connexes