Sécurité des applications Web ASP.NET

ASP.NET fonctionne de concert avec Microsoft .NET Framework et IIS pour apporter une sécurité aux applications Web. Pour protéger votre application ASP.NET, vous devez exécuter les deux fonctions fondamentales décrites ci-dessous :
Authentification : Permet de vérifier que l’utilisateur est, en fait, bien celui qu’il prétend être. L’application obtient des informations d’identification (diverses formes d’identification, telles que le nom et le mot de passe) d’un utilisateur et valide ces informations d’identification auprès d’une autorité. Si les informations d’identification sont valides, l’entité qui les a présentées est considérée comme étant une identité authentifiée.
Autorisation : Limite les droits d’accès en accordant ou en refusant des autorisations spécifiques à une identité authentifiée.
– La compréhension des menaces représente un aspect important du développement d’une application sécurisée. Microsoft a élaboré un système de classification des différentes menaces : usurpation, falsification, répudiation, divulgation d’informations, déni de service et élévation de privilège sous le nom de STRIDE (Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege ). Les sections suivantes présentent brièvement ces menaces et la façon dont elles s’appliquent aux applications Web.

Usurpation
Usurper signifie emprunter l’identité d’un utilisateur ou d’un processus de manière non autorisée. L’usurpation peut se traduire par le simple fait d’entrer des informations d’identification d’un autre utilisateur. Une utilisation malveillante peut aussi modifier le contenu d’un cookie pour prétendre qu’il s’agit d’un utilisateur différent ou que le cookie provient d’un autre serveur.
En général, vous pouvez éviter toute usurpation à l’aide de procédures d’authentification rigoureuses. Chaque fois que quelqu’un demande l’accès à des informations non publiques, assurez-vous de l’identité de la personne. Vous pouvez également éviter l’usurpation en conservant les informations d’identification de façon sécurisée. Ne conservez pas, par exemple, un mot de passe ou d’autres informations sensibles dans un cookie, car un utilisateur malveillant peut facilement le trouver ou le modifier.

Falsification
Falsifier signifie modifier ou supprimer une ressource sans autorisation. C’est le cas par exemple de l’altération d’une page Web par un utilisateur malveillant qui accède à un site et en modifie les fichiers. L’utilisation d’une attaque de script constitue un moyen de falsification indirect. Un utilisateur malveillant envoie du code (script) exécutable en le masquant comme entrée d’utilisateur d’une page ou sous forme de lien.
La première défense contre la falsification consiste à utiliser la sécurité Windows pour verrouiller les fichiers, répertoires et autres ressources Windows.L’application doit également s’exécuter avec les privilèges minimums. Vous pouvez vous protéger contre les attaques de script en vous méfiant systématiquement de toute information provenant d’un utilisateur, voire d’une base de données. Chaque fois que vous obtenez des informations d’une source non fiable, vérifiez qu’elles ne contiennent aucun code exécutable.

Répudiation
Une menace répudiation implique le traitement d’une transaction de telle façon qu’aucune preuve des entités de sécurité impliquées ne subsiste à la transaction. Dans une application Web, cela peut se traduire par l’usurpation des informations d’identification d’un utilisateur innocent. Là encore, vous pouvez vous protéger de la répudiation à l’aide de procédures d’authentification rigoureuses. Utilisez, en plus, les fonctionnalités du journal de Windows pour conserver une trace de l’ensemble des activités ayant eu lieu au niveau du serveur.
Divulgation d’informations
La divulgation d’informations désigne simplement le vol ou la révélation d’informations supposées être privées. Un exemple typique est le vol de mots de passe, mais la divulgation d’informations peut impliquer l’accès à n’importe quel fichier ou ressource du serveur.
Le meilleur moyen de se défendre contre la divulgation d’informations est de ne disposer d’aucune information à divulguer. Par exemple, si vous ne stockez pas les mots de passe, les utilisateurs malveillants ne pourront pas les voler. Une alternative au stockage des mots de passe consiste à ne stocker que leur hachage.Lorsqu’un utilisateur présente ses informations d’identification, vous pouvez hacher le mot de passe de l’utilisateur et comparer uniquement les deux hachages.Si vous stockez des informations sensibles, sécurisez-les à l’aide de la sécurité Windows. Utilisez également l’authentification pour garantir que seuls les utilisateurs autorisés puissent accéder aux informations restreintes. Si vous devez exposer des informations sensibles, il est recommandé de chiffrer les informations lorsqu’elles sont stockées et d’utiliser SSL (Secure Sockets Layer) pour chiffrer les informations lorsqu’elles sont envoyées au et à partir du navigateur.

Déni de service
Une attaque de déni de service vise à réduire de façon délibérée la disponibilité d’une application. La surcharge d’une application Web de sorte qu’elle ne puisse pas servir les utilisateurs ordinaires en est un exemple classique. Des utilisateurs malveillants peuvent aussi simplement tenter de provoquer l’arrêt de votre serveur.
IIS vous permet de limiter les applications, c’est-à-dire de restreindre le nombre de demandes auxquelles elles répondent. Vous pouvez refuser l’accès à des utilisateurs ou adresses IP connus comme étant malveillants. Pour garder vos applications en ligne vous devez exécuter du code fiable. Vous devez intégralement tester votre application et, dans la mesure du possible, effectuer les actions appropriées en cas d’erreurs.

Élévation de privilège
L’élévation de privilège consiste, pour un utilisateur malveillant, à obtenir un niveau d’autorisation plus élevé que celui qui lui est normalement assigné. Par exemple, une élévation de privilège réussie consiste, pour un utilisateur malveillant, à obtenir des privilèges d’administrateur de votre serveur Web, ce qui lui donne accès à toutes les données sur le serveur ainsi qu’au contrôle des fonctions serveur.
Pour vous protéger de l’élévation de privilège, exécutez l’application avec les privilèges les plus faibles possible. Par exemple, il est recommandé de ne pas exécuter les applications ASP.NET en tant qu’utilisateur SYSTEM (administrateur).

Pourquoi utiliser Team Foundation Server (TFS)

Il est actuellement difficile pour les managers, le chef de projets et les fonctionnels, de suivre et de prioriser les différentes tâches effectuées par l’équipe de développement. Bientôt, le support, la hotline et les clients auront aussi envie de pouvoir suivre leurs bugs et demandes d’évolution. Les projets comprennent des milliers de petites fonctionnalités et bientôt, les bugs vont venir s’y ajouter. Et pour les développeurs, il est d’autant plus difficile d’estimer le temps de réalisation d’un écran, d’une grande fonction, qu’elle a de sous-fonctionnalités. Et surtout, au fur et à mesure des échanges AMOA-MOE, les besoins changes et il est difficile de les suivre.

Les questions que nous nous posons actuellement sont nombreuses :
– Comment (re)prioriser les tâches à tout moment, en fonction :
o des jalons et livraisons prévues ?
o des bugs détectés ?
o des tâches imprévues qui se sont ajoutées ?
o des retards ?
– Comment savoir :
o que telle ou telle fonctionnalité, noyée dans les nombreuses petites fonctionnalités d’un écran ou ajoutée après coup et ne se trouvant pas dans les spécifications, a bien été planifié, réalisée, testée ?
o qu’un bug a été corrigé et qu’on peut commencer à le vérifier ?
o quelles évolutions et quels bugs corrigés sont inclus dans la nouvelle version livrée ?
o dans quel livraison seront livrées des fonctionnalités et des bugs attendus ?
o A quelle date estimée sera livré un élément de travail
– Comment suivre :
o l’évolution du nombre des fonctionnalités, des bugs, des risques, des tâches du projet ?
o les différentes métriques du projet ?
o …

Pour répondre à toutes ces questions, il faut 2 choses :
Рun seul outil qui centralise toutes les donn̩es du cycle de vie du projet (plut̫t que plusieurs outils g̩rant chacun un type de donn̩es avec son propre sch̩ma et processus).
– que chaque responsable d’un domaine fonctionnel saisisse dans l’outil toutes les fonctionnalités qu’il souhaite suivre et tester.

L’outil Microsoft Team Foundation Server (TFS) permet de répondre à tous ses besoins. Il est possible de saisir des bugs, mais aussi des scénario des fonctionnalités, des exigences et des contraintes de qualité de service, des risques, des tâches, … La force de TFS est qu’il permet aussi d’utiliser Excel et MS Project comme éditeurs, et de permettre de personnaliser les éléments de travail à volonté.