Question

Si le nom d'un lien est tiré de la base de données, si vous appellerez la méthode Html.Encode pour nettoyer le nom?

Par exemple:

Html.ActionLink(Model.PersonFromDB.FirstName,
                "Action",
                "Controller",
                new RouteValueDictionary { { "id", Model.PersonFromDB.Id } },
                null)

ou

Html.ActionLink(Html.Encode(Model.PersonFromDB.FirstName),
                "Action",
                "Controller",
                new RouteValueDictionary { { "id", Model.PersonFromDB.Id } },
                null)

Il serait logique que vous voulez faire pour assurer qu'il n'y a pas de chaînes dangereuses injectées dans la page entre les balises de <a> et </a>, mais sont des scripts et des exécutables tels entre les balises d'ancrage?

Était-ce utile?

La solution

Non, puisque selon ce fil sur HtmlAction.Link() SO déjà HTML code des valeurs, de sorte que vous finiriez le faire deux fois.

Autres conseils

Il est certainement une bonne idée, mais vous devriez probablement empêcher les utilisateurs d'entrer dans les chaînes potentiellement malveillants comme premier nom.

Oui, tout à fait. En règle générale, pour tout HTML que vous allez à la sortie qui a été initialement obtenu à partir d'une source non fiable, en supposant le format n'a pas été HTML déjà (et suffisamment Info brute), vous devez toujours HTML encoder la chaîne pour protéger contre les attaques par injection.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top