Должен ли Html.Encode вызываться при создании ActionLinks в ASP.NET MVC - PullRequest
2 голосов
/ 17 февраля 2010

Если имя ссылки извлекается из базы данных, следует ли вам вызывать метод Html.Encode для очистки имени?

Например:

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

или

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

Было бы целесообразно сделать это, чтобы убедиться, что в страницу между тегами <a> и </a> не вставлены опасные строки, но являются ли сценарии и такие исполняемые между тегами привязки?

Ответы [ 3 ]

6 голосов
/ 17 февраля 2010

Нет, поскольку согласно этот поток на SO HtmlAction.Link() уже HTML кодирует значения, так что в конечном итоге вы сделаете это дважды.

0 голосов
/ 17 февраля 2010

Это, конечно, хорошая идея, но вам, вероятно, следует запретить пользователям вводить потенциально вредоносные строки в качестве своего имени.

0 голосов
/ 17 февраля 2010

Да, абсолютно. Как правило, для любого HTML, который вы собираетесь выводить, который был первоначально получен из ненадежного источника, при условии, что формат уже не был HTML (и достаточно проверен), вы всегда должны кодировать строку HTML для защиты от атак внедрения.

...