Besoin d’un scénario de sécurité pour le service Web asp.net

J’ai développé une application .Net 3.5 Windows Forms. Je souhaite également concevoir un site Web doté d’un service Web avec plusieurs méthodes Web pour interroger la firebase database sur la machine hôte. Je souhaite que le service Web soit appelé UNIQUEMENT via mon application winapp et mon site Web! Et je ne souhaite pas que d’autres personnes puissent appeler et utiliser mon service Web, mais uniquement certaines personnes ayant access à l’application Windows que j’ai développée.

J’ai besoin d’un bon scénario de sécurité pour cela! J’apprécie vraiment tous ceux qui peuvent m’aider, car c’est la première fois que je développe un service Web et j’en ai vraiment besoin pour être aussi sécurisé que je l’ai mentionné!

Ce dont vous parlez va être difficile à faire pour plusieurs raisons, mais principalement ceci:

Si vous mettez quelque chose dans le code de votre application WinForms, il peut être décompilé très facilement. Vous pouvez masquer le code à votre guise, mais vous pouvez le décomstackr.

À cause de cela, tout code que vous avez dans votre application peut être lu par toute personne ayant access au code. Vous devez toujours traiter toute application WinForms comme si elle était complètement compromise et vous assurer que la sécurité côté serveur compense.

Pour cette raison, vous ne pouvez pas simplement stocker les noms d’utilisateur et les mots de passe dans des fichiers de configuration ou dans du code. Vous devez trouver quelque chose d’autre. Vous POUVEZ utiliser l’authentification et inviter l’utilisateur à entrer un nom d’utilisateur / mot de passe au lancement du programme et l’utiliser. Cependant, les gens ont tendance à partager ces choses, alors vous voudrez peut-être une protection supplémentaire.

Vous pouvez mettre les informations de connexion ou les secrets dans app.config et les chiffrer, mais toute personne qui peut décomstackr le code, peut le recomstackr et append du code pour le déchiffrer à sa guise.

Vous pouvez fournir des clés signées avec votre application et les utiliser dans un mécanisme d’authentification, mais cela peut être contourné.

Vous pouvez limiter votre adresse IP à des adresses IP spécifiques, mais celles-ci peuvent être usurpées.

Toutefois…

En superposant toutes les techniques ci-dessus, vous pouvez empêcher un attaquant de contourner vos précautions. Nous avons effectué les opérations suivantes dans l’une de nos applications pour lesquelles nous avions une exigence similaire:

  • Nous avons configuré une firebase database contenant un enregistrement GUID pour chaque client autorisé et les adresses IP autorisées pour ce client.
  • Chaque méthode Web attend un paramètre CustomerKey. (le guide mentionné ci-dessus) Chaque appel à un service Web compare la clé à l’adresse IP.
    • Si cela correspond, des données valides sont renvoyées.
    • En cas d’échec, des données valides sont renvoyées. Nous renvoyons en fait ce qui semble être de bonnes données, mais ce n’est vraiment pas le cas. Il est donc plus difficile pour un attaquant de savoir s’il a franchi les défenses.
  • Dans l’application WinForms, la clé est stockée dans le fichier app.config, qui est chiffré dans l’événement main () (point d’entrée des applications WinForms). Cela empêche le lecteur occasionnel d’y accéder.
  • Le programme est lancé automatiquement à l’installation, afin que le cryptage se produise au démarrage, afin de minimiser les risques que quelqu’un puisse lire le fichier avant qu’il ne soit crypté.
  • En outre, le code est obscurci.

Si tout va bien, superposer les défenses découragera l’attaquant moyen.

Microsoft a également quelques directives: http://msdn.microsoft.com/en-us/library/ff648643.aspx