От клиента обнаружено потенциально опасное значение Request.Form (wresult = ‹trust: RequestSecuri)

Я также получаю сообщение об ошибке проверки запроса при использовании WIF. Меня правильно отправили в STS, но на обратном пути я получаю эту ошибку проверки.

Я выполнил все инструкции.

<httpRuntime  requestValidationMode="2.0" />

чек!

    [ValidateInput(false)]

чек!

<pages validateRequest="false" >

чек!

Я попробовал собственный валидатор, но он так и не был создан.

Стек ошибок:

[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (wresult="trust:RequestSecuri...").]
   System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +11396740
   System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) +82
   System.Web.HttpRequest.get_Form() +212
   Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.IsSignInResponse(HttpRequest request) +26
   Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.CanReadSignInResponse(HttpRequest request, Boolean onPage) +145
   Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs args) +108
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +270

Какие-либо предложения?


person Code Silverback    schedule 30.09.2011    source источник
comment
Лучше всего добавить конкретный валидатор, как описано в this ответ.   -  person MarnixKlooster ReinstateMonica    schedule 01.10.2011
comment
Правильный способ решения этой проблемы описан [здесь] [1]. [1]: stackoverflow.com/questions/5443563/   -  person Eugenio Pace    schedule 02.10.2011
comment
@Eugenio Да, это то, что я сказал. :-)   -  person MarnixKlooster ReinstateMonica    schedule 02.10.2011
comment
ты прав :-). Пропустил комментарий.   -  person Eugenio Pace    schedule 03.10.2011


Ответы (4)


<httpRuntime requestValidationMode="2.0"/>

после этого добавить

<configuration>
    <system.web>
        <pages validateRequest="false" />
    </system.web>
</configuration>

также в mvc3 есть атрибут AllowHtml

[AllowHtml]
public string Property{ get; set; }

вот несколько полезных ссылок

ASP.NET MVC - страницы validateRequest = false не работает?

Почему ValidateInput (False) не работает?

person Rafay    schedule 30.09.2011
comment
Извините, отредактировано, чтобы отметить, что у меня есть страницы validateRequest = false. - person Code Silverback; 30.09.2011
comment
Атрибут AllowHtml работал у меня, когда возникла эта проблема. - person kolin; 13.02.2012
comment
Что произойдет, если я не захочу отключать проверку запросов для всего сайта при использовании веб-форм? У MVC есть хороший способ разрешить это для свойства объекта, как насчет веб-форм. - person Jason Foglia; 20.12.2013
comment
@JasonFoglia этот пост может помочь решить вашу проблему stackoverflow.com/a/8017318/413670 - person Rafay; 20.12.2013

См. этот ответ, если вы используете .NET 4.5, который использует обновленный валидатор запросов, встроенный в ASP.NET.

person roryWoods    schedule 19.03.2014

Вы можете объединить обе конструкции в разделе system.web согласно ASP.NET : От клиента обнаружено потенциально опасное значение Request.Form.

Обратите внимание, что это стандартная функциональность ASP.NET. К WIF не подключен.

person rbrayb    schedule 02.10.2011

В MVC 3 (не уверен в 2) вы можете добавить глобальный фильтр в global.asax.cs, например.

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new ValidateInputAttribute(false));
}

Это в сочетании со следующим должно разрешить ввод всех данных и отображать их правильно и безопасно, я думаю:

<httpRuntime encoderType="Microsoft.Security.Application.AntiXssEncoder, AntiXssLibrary"/>

в web.config и используя (обратите внимание на двоеточие):

<%: Model.Something %>

или в Razor:

@Model.Something

и в некоторых случаях в Javascript:

@Html.Raw(Ajax.JavaScriptStringEncode(Model.Something))
person Simon Vane    schedule 11.06.2012