2010-02-07 5 views
4

Je prévois de travailler sur un nouveau projet et je suis maintenant tenté d'utiliser ASP.NET MVC. Mon projet prévoit d'utiliser JQuery et AJAX (bien que les clients non-JS soient également supportés). Venant d'un arrière-plan ASP.NET standard, j'essaie toujours de comprendre le paradigme MVC (avec beaucoup d'aide de Scott Guthrie). Cependant, ma principale préoccupation avec l'utilisation de MVC est les aspects de sécurité. J'ai fait pas mal de sécurité avec ASP.NET et je sais gérer différents vecteurs d'attaque. Aurai-je besoin de réapprendre la sécurité avec ASP.NET MVC? Y a-t-il de nouvelles menaces, ou même de nouvelles façons de gérer les vieilles menaces, sur lesquelles je devrai lire? J'ai commandé quelques livres ASP.NET MVC (qui ont des chapitres sur la sécurité), mais j'aimerais connaître l'expérience de quelqu'un d'autre à ce sujet.Nouveau sur ASP.NET MVC - Devrai-je réapprendre la sécurité?

Merci

Répondre

2

dépend de ce que vous entendez par la sécurité.

L'autorisation est fondamentalement la même, sinon plus facile. L'authentification par formulaires est prise en charge et encouragée. Il suffit de coller un attribut [Authorize] sur les contrôleurs ou les actions du contrôleur. Pas trop pour apprendre là-bas.

ViewState a disparu, vous n'avez donc pas besoin de vous soucier de la validation de ViewState ou de tout ce qui concerne kludge.

Si vous faites référence à XSS, je dirais que c'est à peu près la même chose; vous avez besoin pour échapper à vos données sur la sortie et il est très facile à faire:

<%= Html.Encode(Model.SomeString) %> 

La seule chose que je peux penser que vous pourriez trouver un peu différent est la manipulation CSRF/XSRF. Heureusement, la plus grande partie est déjà built in to the framework. Donc, dans l'ensemble, je dirais que non, la courbe d'apprentissage pour la sécurité dans ASP.NET MVC ne devrait pas être aussi raide que la courbe d'apprentissage pour l'architecture elle-même.

+0

Merci, cela rend beaucoup plus facile de surmonter la courbe d'apprentissage. D'un autre côté, si j'utilise 'UpdateModel()', est-ce qu'il HTMLEncode automatiquement mes données? Je comprends que je dois le faire manuellement lors du passage des objets du modèle, mais je ne sais pas trop quoi faire lors de l'utilisation de UpdateModel. Merci encore. – keyboardP

+0

@TenaciousImpy: Vous n'avez besoin de vous soucier que de l'encodage/de l'échappement à la sortie, lorsque les données que vous présentez proviennent d'une source non fiable. À quelques exceptions près, il n'est pas vraiment nécessaire d'assainir ce qui arrive (je suppose que vous paramétrez vos requêtes SQL et tout ça). Mais pour répondre à votre question exacte, non, 'UpdateModel' ne code pas vos données HTML, parce que vous l'auriez encodé deux fois avant qu'il ne soit affiché et que les visiteurs de votre site verront des étranges' > 'au milieu des mots . – Aaronaught

+0

Avec ASP.NET MVC 2, '<%: Model.SomeString%>' code automatiquement le texte pour vous. Notez le ':' au lieu de '='. – Omar

Questions connexes