я должен всегда использовать <%: вместо <% = - PullRequest
6 голосов
/ 20 июля 2010

Я знаю, что <%: выполняет html.encode, но есть много ситуаций, когда я уверен, что мне не нужно кодировать, так почему я должен тратить время на кодирование, что я на 100%% уверен, что он не требует кодирования, например, <code><%:Url.Action("Index") %> или <%: Model.Id %> (имеет тип int)?

Ответы [ 6 ]

8 голосов
/ 20 июля 2010

Слепок кода : является частью веб-компилятора ASP.NET 4.0 и не просто вызывает Html.Encode().Он определяет, была ли строка уже закодирована первой (если выражение возвращает IHtmlString, то, вероятно, она не будет закодирована).

Это означает, что ее можно использовать при вставке фактических данных илипри вставке HTML из какого-либо вспомогательного метода (если вы пишете свои собственные вспомогательные методы, они всегда должны возвращать IHtmlString с MVC 2).

Что касается того, используете ли вы его всегда или нет, конечно,ты неНо я бы предпочел не думать об этом слишком много и буду счастлив, если узнаю, что я прошел путь к отражению атак XSS без особых усилий;поэтому я почти всегда использую его.

Он также рекомендует вам убедиться, что вы возвращаете MvcHtmlString из своих вспомогательных методов HTML, а не string.

4 голосов
/ 20 июля 2010

Один пример, в котором вы бы не хотели бы использовать <%: для строк, которые приходят из файла ресурсов и содержат экранирующие символы HTML. Я не думаю, что вы можете сделать общее заявление, что вы должны <em>всегда использовать <%:. </p>

3 голосов
/ 20 июля 2010

Лично я использую его только для тех вещей, которые, как я знаю, нужно кодировать. Нет необходимости использовать его для целочисленных типов <%: Model.Id %>, но это просто личное предпочтение.

1 голос
/ 20 июля 2010

<%: model %> эквивалентно <%= Html.Encode(model)%>

с использованием <%: экономит нажатия клавиш и повышает производительность,

но иногда вам нужно будет <%= (не кодировать то, что вы отображаете на своей странице)

0 голосов
/ 20 июля 2010

Это проще, если вы используете только один тип, и делает код более чистым. Кроме того, вы никогда не знаете, кто изменит код, и делает из простого «100%» утверждение, а не из 100% утверждение: -)

Обычно в веб-среде производительность при таких вещах не является проблемой.

я бы предложил использовать только «<%:» в качестве руководства по развитию команды. просто чтобы быть в безопасности. </p>

0 голосов
/ 20 июля 2010

Одним из преимуществ кодирования в HTML является то, что он делает страницы W3C действительными в соответствии с соответствующим типом данных. Так зачем проверять документ в первую очередь?

Для ответа на этот вопрос, пожалуйста, проверьте: http://validator.w3.org/docs/why.html

Краткая проверка HTML экономит много времени позже в цикле разработки и является хорошей практикой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...