Опасное значение Request.Form было обнаружено от клиента - почему? - PullRequest
2 голосов
/ 24 октября 2011

Я прочитал все остальные сообщения, связанные с этой ошибкой. Может быть, я что-то здесь упускаю, но я не знаю что. Я использую textArea для ввода текста в нем (HTML-текст).
Эта текстовая область привязана к моему свойству класса домена

public class SomeClass{
...
[AllowHtml]       
        public string CommentText { get; set; }
...
}

Я также пытался добавить атрибут [ValidateInput (false)] , но ничего. Но, читая текст ошибки, я вижу, что запрос даже не приходит к контроллеру, он прерывается в Application_BeginRequest () . Это сообщение об ошибке:

A potentially dangerous Request.Form value was detected from the client (CommentText="<p>ddd</p>")
Line 23:         protected void Application_BeginRequest(Object sender, EventArgs e)
Line 24:         {
Line 25:             if (HttpContext.Current.Request["RequireUploadifySessionSync"] != null)
Line 26:                 UploadifySessionSync();
Line 27:         }

Source File: D:\Projects\...\Global.asax.cs    Line: 25 

Stack Trace: 


[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (CommentText="<p>ddd</p>").]
   System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +8755668
   System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) +122
   System.Web.HttpRequest.get_Form() +114

Я знаю, что могу отключить проверку всех приложений в веб-конфигурации. Но мне это нужно только в одном случае (чтобы разрешить ввод HTML).
Еще более странно, что это работает несколько дней назад, и я ничего не изменил здесь, просто войдите и выйдите из системы.
Что я здесь не так делаю?
Хорошо, теперь я удаляю этот код из global.asax:

if (HttpContext.Current.Request["RequireUploadifySessionSync"] != null)
                UploadifySessionSync();

И теперь это работает. Но мне нужен этот код здесь. Почему выдает эту ошибку?

Ответы [ 2 ]

3 голосов
/ 24 октября 2011

На это уже ответили.

Предыдущий вопрос

Вам нужно изменить способ проверки вашего запроса на обработку, чтобы вернуть его обратно к 2.0

0 голосов
/ 25 апреля 2012

Ваша конкретная проблема заключается в том, что у вас есть код, который просматривает параметры запроса в BeginRequest, который находится раньше в конвейере ASP.NET, чем когда привязаны ваши модели (где вступает в игру атрибут AllowHtml или ValidateInput). ).

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

В моем случае я просто поймал HttpRequestValidationException в методе BeginRequest и проглотил исключение. Это не лучшая практика, но проверка будет выполнена позже в конвейере, поэтому вы по-прежнему можете контролировать ее.

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