2009-05-12 5 views
2

J'écris une application ASP.Net MVC qui utilise l'authentification NTLM, donc les utilisateurs n'ont pas besoin de s'inscrire sur le site. Si j'ai désactivé l'accès anonyme, puis-je utiliser User.Identity.Name comme clé de propriété dans la base de données. Ce que je voudrais faire est d'être en mesure d'émettre une recherche commeQuelle est la taille de User.Identity.Name?

from station in db.stations where station.user == username select *; 

est-ce assez pour savoir fiable qui est l'utilisateur, ou est-il someway un utilisateur méchant pourrait usurper la chaîne de nom et un accès gagner aux données qu'ils ne devraient pas?

Répondre

4

Le nom est rempli à partir de la session afin que l'attaquant doive usurper le cookie de session pour pirater la session de l'utilisateur et avoir accès. Le cookie de session ASP.NET est crypté pour empêcher cela, mais vous devez absolument faire en sorte que la session expire afin qu'un attaquant déterminé ne puisse pas passer un temps illimité à tenter de rompre le cryptage. La définition de vos cookies sur httpOnly peut également aider à empêcher qu'un script malveillant dans le navigateur n'accède au cookie.

Voici un reference pour les meilleures pratiques de sécurisation d'un site Web ASP.NET 2.0. Une grande partie est encore applicable, mais peut avoir besoin d'être traduite en MVC.

+0

Si j'utilise l'authentification Windows, je suppose qu'il n'y a pas de cookies impliqués et qu'il devrait être assez compliqué d'usurper l'authentification Kerbros? –

+0

Les mêmes principes s'appliquent, mais c'est un ticket que vous échangez au lieu d'un cookie. Une chose dont vous devez vous préoccuper est que l'utilisateur n'ait besoin que d'accéder à une session connectée pour accéder à votre application. Vous pouvez toujours effectuer l'authentification par formulaire sur AD, de sorte que l'utilisateur n'a pas besoin de s'enregistrer. – tvanfosson