11
votes

Sécurité de niveau de surface pour ASP.NET MVC

Je sais qu'il est possible de décorer un contrôleur avec l'attribut Autoriser à contrôler l'accès, ce que je ne sais pas est le moyen accepté ou approprié d'appliquer la sécurité sur tous les contrôleurs / vues dans une zone.

Y a-t-il quelque chose dans web.config, enregistrement de la zone ou un autre endroit pour appliquer la sécurité de l'autorisation?


0 commentaires

4 Réponses :


-3
votes

Vous pouvez toujours utiliser nier ou permettre


2 commentaires

N'utilisez pas de méthodes Web.config pour sécuriser les applications MVC, voir blogs.msdn.com/b/rickandy/archive/2012/03/23/...


Down votant en raison d'autres réponses indiquant explicitement que vous ne devriez pas faire cela ... et pourquoi vous ne devriez pas faire cela.



9
votes

Un moyen pratique consiste à créer une nouvelle classe de base xxx

et assurez-vous que tous vos contrôleurs pour lesquels vous avez besoin d'une autorisation (dans votre cas, tout dans la zone que vous êtes préoccupé par) descendre de autorishatbasecontroller . xxx

[Autoriser] attribut doit affecter tous les descendants du nouveau classe de base.

EDIT Le problème que j'ai avec l'utilisation du 2 commentaires

Votre méthode est suggérée comme l'ancienne méthode pour MVC2. Ne vous suggère pas du tout, vous êtes incorrect. Voici un lien vers la nouvelle et améliorée technique pour MVC3 à l'aide de filtres globaux blogs.msdn.com/b/rickandy/archive/2011/05/02/...


Votre accueil, et c'est un compliment, car je n'ai commencé que d'essayer d'apprendre le MVC3 mardi. :)



0
votes

Comme il a déjà été suggéré, vous pouvez utiliser l'élément dans votre web.config. Sinon, vous pouvez utiliser une classe de contrôleur de base par zone et décorer qu'avec le Autorizeattribute afin que tous les contrôleurs qui héritent de ce soi-même sont filtrés.


0 commentaires

7
votes

Le seul Un moyen sûr de le faire dans une application MVC est de faire ce que David suggère - attribuer un contrôleur de base et avoir tous les contrôleurs dans la sous-classe de la zone que le contrôleur de base.

Utilisation d'une balise pour autorisation dans MVC sera Open Security Trous dans votre application. Vous n'êtes pas intéressé par la sécurisation des URL ou des itinéraires. Vous souhaitez sécuriser les contrôleurs eux-mêmes, car ils sont les ressources réelles que vous essayez de protéger. Par conséquent, les protections doivent être placées directement sur les contrôleurs.

En outre, rappelez-vous qu'une zone est vraiment une manière fantaisie de grouper itinéraires , pas de contrôleurs. Essayer d'utiliser la logique fantaisie pour détecter la zone actuelle et les paramètres d'autorisation de déduire opencent également des trous de sécurité dans votre application.


0 commentaires