Я знаю что <%: html.encode вещь, но существует много ситуаций, когда я уверен, что не должен кодировать, итак, почему я должен напрасно тратить время при кодировании материала, что я на 100% уверен, что это не требует, чтобы быть закодированным как, например, <%:Url.Action("Index") %>
или <%: Model.Id %>
(имеет интервал типа)?
Лично я использую его только для вещей, которые, как я знаю, нужно кодировать. Нет необходимости использовать его для целочисленных типов <%: Model.Id%>
, но это только личные предпочтения.
Слепок кода :
является частью веб-компилятора ASP.NET 4.0 и не просто вызывает Html.Encode ()
. Он определяет, закодирована ли уже строка (если выражение возвращает IHtmlString
, то оно, вероятно, не будет закодировано).
Это означает, что его можно безопасно использовать при вставке фактических данных или при вставке HTML из вспомогательного метода некоторого типа (если вы пишете свои собственные вспомогательные методы, они всегда должны возвращать IHtmlString
начиная с MVC 2) .
Что касается того, всегда ли вы его используете, конечно, нет. Но я бы предпочел не думать об этом слишком много и буду счастлив, зная, что я прошел некоторый путь к отражению XSS-атак с небольшими усилиями; поэтому я почти всегда им пользуюсь.
Также рекомендуется возвращать MvcHtmlString
из вспомогательных методов HTML, а не строку
.
Один пример, когда вы не захотите использовать <%: - это строки, которые приходят из вашего файла ресурсов и включают символы экранирования HTML. Я не думаю, что можно сделать однозначное заявление о том, что вы должны всегда использовать <%:.
<%: model%>
эквивалентно <% = Html.Encode (model)%>
с использованием <%:
экономит нажатия клавиш и повышает производительность,
, но иногда вам нужно сделать <% =
(не кодировать то, что вы показываете на своей странице)
Одним из преимуществ кодирования в HTML является то, что оно делает страницы W3C действительными согласно соответствующему типу данных. Так зачем вообще проверять документ?
Для ответа на этот вопрос, пожалуйста, проверьте: http://validator.w3.org/docs/why.html
Краткая проверка HTML сохраняет много времени позже в цикле разработки и это хорошая практика.
Это проще, если вы используете только один тип, и делает код более чистым. Кроме того, вы никогда не знаете, кто изменит код, и делает из простого оператора «100%», не очень 100% оператора :-)
Обычно в веб-среде производительность таких вещей не является проблемой.
Я бы предложил использовать только «<%:» в качестве руководства по разработке команды. просто чтобы быть в безопасности.