Предложения по размещению вызовов AntiXSS в ASP.NET MVC - PullRequest
5 голосов
/ 13 января 2010

Я пытаюсь найти оптимальный метод защиты от межсайтового скриптинга в моем приложении ASP.NET MVC. Я планировал использовать библиотеку Microsoft AntiXSS и, по сути, защищать ее на двух уровнях: 1) защищать обычные текстовые поля (т. Е. Те, которые должны содержать только простой текст и 2) защищать текстовые поля, которые могут генерировать HTML. Сама библиотека очень проста, но мне трудно решить, где разместить проверку. Я использую строго типизированные HTML-помощники и напрямую привязываю свои модели / модели представления и хотел бы избежать применения AntiXSS индивидуально в каждом методе действия. Кроме того, определенно не нужно отключать валидацию ввода для моих действий, связанных с публикацией, что является обязательным условием, если я передаю HTML в одно из свойств моей модели / модели представления.

Есть ли где-нибудь, что AntiXSS может быть введен в ASP.NET MVC, чтобы он применялся перед рендерингом представления (декодирования) и перед входом в фильтр действий (кодирование)?

Заранее спасибо

1 Ответ

2 голосов
/ 13 января 2010

Вы можете переопределить метод OnActionExecuting для System.Web.Mvc.Controller и использовать свойство ActionDescriptor для аргумента ActionExecutingContext в OnActionExecuting, чтобы определить, какое действие выполняется в данный момент. Затем вы можете (я думаю) изменить ActionParameters на ActionExecutingContext для кодирования.

Планируете ли вы использовать это только для проверки непослушного контента (AntiXss.GetSafeHtml) или вы также планируете кодировать (AntiXss.HtmlEncode)? Если это последнее, я бы подумал об этом, так как он ограничивает ваш выходной формат только HTML, что, вероятно, сейчас нормально, но может быть ограничивающим, если эти данные будут использоваться где-либо еще.

...