Je travaille par NerdDinner et je suis un peu confus au sujet de la section suivante ...Html encodage en entrée MVC
D'abord ils ont ajouté un formulaire pour créer un nouveau dîner, avec un tas de textboxes delcared comme:
<%= Html.TextArea("Description") %>
Ils montrent alors deux façons d'entrée de la forme contraignante du modèle:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create() {
Dinner dinner = new Dinner();
UpdateModel(dinner);
...
}
ou:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dinner dinner) { ... }
Ok, super, tout semble très facile jusqu'à maintenant.
Puis un peu plus tard, ils disent:
Il est important de toujours être paranoïaque sur la sécurité lors de l'acceptation à tout utilisateur d'entrée , et cela est également vrai lorsque objets de liaison pour former entrée. Vous devriez faire attention à toujours HTML encode toutes les valeurs entrées par l'utilisateur pour éviter HTML et JavaScript par injection attaque
Huh? MVC gère la liaison de données pour nous. Où/comment êtes-vous censé faire le codage HTML?
donc peu importe ce que je laisse l'utilisateur d'entrer dans la forme, tant que je ne suis pas sortie encore sans codage? Je ne sais pas vraiment comment fonctionne l'injection HTML. – fearofawhackplanet
Oui. Il existe de nombreux types d'attaques de script intersite, mais une simple vérification sur votre propre site consiste à entrer l'alerte 'partout où l'utilisateur peut entrer des données (y compris lors de la création de son nom d'utilisateur). Si vous voyez le popup d'alerte (en supposant que vous avez activé javascript), vous aurez trouvé un endroit qui nécessite un encodage HTML. Il est préférable de coder la sortie ** all ** au format HTML et de ne supprimer ce codage que lorsque cela est nécessaire. – RedFilter
ok merci orbman – fearofawhackplanet