Comment arriver à sécuriser une application ASP.NET MVC?

padlockL’autre jour, j’étais à la recherche de bonnes pratiques pour l’implémentation d’une page de connexion utilisant ASP.NET MVC. Cela faisait un petit moment que je n’avais pas eu l’occasion d’en faire. J’avais besoin de me rafraîchir la mémoire.

Après avoir consulté quelques pages sur le sujet, un exemple provenant de Microsoft utilisait l’attribut AllowAnonymous sur l’action de contrôleur de connexion. Ça a piqué ma curiosité, car la majorité des autres exemples n’en faisait pas l’usage.

La première conclusion à tirer de ceci est que la majorité de développeurs ayant publié leur code sur le web ne connaît rien à la sécurité web. Je ne suis moi même pas un expert. Toutefois, il s’agit d’un fait à assumer lorsqu’il est question de sécurité informatique.

En deuxième lieu, il ne faut jamais prendre du code du web sans s’assurer de comprendre ce qu’il essaie d’accomplir. C’est encore plus important lorsqu’il est question de sécurité et d’authentification web.

Pour faire simple et pour revenir à mes moutons, l’attribut AllowAnonymous est un mécanisme permettant au développeur d’autoriser l’accès, à une requête anonyme (lire non authentifiée), à une action de contrôleur ou à toutes les actions d’un contrôleur.

Un exemple classique de cela peut être tiré directement de MSDN.


[Authorize]
public class AccountController : Controller
{
public AccountController () { . . . }
[AllowAnonymous]
public ActionResult Register() { . . . }
public ActionResult Manage() { . . . }
public ActionResult LogOff() { . . . }
}
//exemple tiré de https://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute%28v=vs.118%29.aspx#exampleToggle

view raw

authorize.cs

hosted with ❤ by GitHub

Dans cet exemple, un appel aux actions Manage et Logoff vont retourner un code HTTP 401. Au contraire, l’action Register sera publiquement accessible. Cela tombe sous le gros bon sens, n’est-ce pas?

Il faut savoir que cette façon de faire est l’un des mécanismes à votre disposition pour sécuriser votre application web. Par exemple, un scénario plus avancé, uniquement accessible aux développeurs ASP.NET 5, serait d’avoir recours à OWIN pour implémenter la sécurité de votre application.

C’est une question de besoin, réellement.

Ceci étant dit, la seule chose à savoir c’est qu’il ne faut pas recourir à la sécurisation en utilisant le web.config. Il s’agit de la pire option, car elle assume que vous sécurisez l’accès à des chemins physiques. Une action de contrôleur peut être accessible par plusieurs chemins. Les choses peuvent déraper rapidement dans ce scénario.

Publicité

Auteur : Pascal Paradis

Je suis les mains et le cerveau derrière http://frenchcoding.com. Je développe des microservices chez @UbisoftMTL. Amateur de Hockey et j'aime la technologie, en général.

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

%d blogueueurs aiment cette page :