J'ai une application ASP.NET MVC multi-utilisateur. Les utilisateurs ne sont pas censés voir ou faire quoi que ce soit avec les données de l'autre.ASP.NET MVC: Vérifier que l'enregistrement d'édition est autorisé (propriété)
Une de mes actions de contrôleur est le POST obligatoire/édition pour éditer un enregistrement (par exemple un contact). Maintenant, voici mon problème: Que se passe-t-il si quelqu'un forge un simple POST à / Edit (qui se lie automatiquement à ma classe de contact) et modifie les informations de quelqu'un d'autre? Comme chaque enregistrement est identifié par Id, tout ce qui doit être fait est de faire un faux POST avec l'ID XXX et ensuite l'enregistrement # XXX sera écrasé avec tout ce que l'attaquant a fourni. Comment puis-je arrêter cela? La seule chose à laquelle je pensais est de récupérer l'instance originale à chaque fois d'abord dans la base de données, de vérifier qu'elle se trouve dans la portée des objets éditables de l'utilisateur (ceux qu'il verrait d'habitude éditer) et seulement Si cette vérification réussit, continuer avec UpdateModel et valider les modifications de mise à jour.
Y a-t-il un meilleur moyen?
Éditer: Ceci n'est pas une attaque Cross Site/CSRF. Un autre utilisateur connecté peut le faire.
Bien que vous pouvez également avoir un administrateur qui peut aller et modifier les détails de tous les utilisateurs. –