Автоматически HtmlEncode в ASP.NET - PullRequest
4 голосов
/ 21 августа 2011

Избалованный Ruby on Rails (3), я ожидаю, что весь мой вывод HTML будет автоматически закодирован.

Я задал этот вопрос об использовании сценариев чуть раньше, и теперь мне интересно, есть ли какие-либо настройки, плагины или расширения для ASP.NET, которые автоматически приведут к тому, что весь HTML будет HtmlEncode 'или я должен быть действительно осторожным и гарантировать это самостоятельно?

Ответы [ 3 ]

4 голосов
/ 21 августа 2011

Различные элементы управления ASP.NET автоматически кодируют HTML с помощью HtmlEncode (а некоторые делают кодирование URL с помощью UrlEncode), но это не универсально.Вот список элементов управления и то, какую кодировку (если есть) они делают автоматически.Я не знаю, обновлено ли оно для .NET 4.0 или нет:

Какие элементы управления ASP.NET автоматически кодируют? (по этой ссылке вас попросят сохранить документ)

Это блог, из которого вышеприведенный документ:

http://blogs.msdn.com/b/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx

Первоначально он был опубликован в сентябре 2008 года, поэтому, вероятно, он актуален для 2.0, но не обязательно для 4.0.Тем не менее, полезный ресурс, чтобы иметь IMO.

Вы также должны взглянуть на Microsoft Anti-Cross Site Scripting Library 3.1 .

Как указывает balexandre,Похоже, что библиотека Anit-XSS теперь является частью библиотеки веб-защиты с открытым исходным кодом:

Библиотека веб-защиты Microsoft

Также OWASP являетсяхороший ресурс для информации о безопасности, и у них есть проект API безопасности предприятия (ESAPI), который доступен (в разной степени) на разных языках программирования.Я полагаю, что .NET еще не завершена.

OWASP Enterprise Security API

3 голосов
/ 21 августа 2011

Если вы используете ASP.NET 4.0 с WebForms, то использование слепка кода <%: %> автоматически HtmlEncode будет выводить. Если вы используете механизм Razor, то все данные по умолчанию кодируются в формате HtmlEncoded.

1 голос
/ 21 августа 2011

По умолчанию ASP.Net не будет принимать постбэки, где Inputcontrol содержит элементы html. Это поведение устанавливается на уровне страницы с помощью свойства ValidateRequest.

Если вы хотите принимать постбэки, содержащие html, вам нужно установить для ValidateRequest значение false и HtmlEncode, чтобы пользователь самостоятельно вводил данные на сервер, прежде чем продолжить

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