Потенциально опасное значение 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
Любые предложения?
Ответы
Ответ 1
<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) не работает?
Ответ 2
См. этот ответ, если вы используете .NET 4.5, который использует обновленный шаблон проверки запроса, встроенный в ASP.NET.
Ответ 3
Вы можете поместить обе конструкции вместе в разделе system.web по ASP.NET: потенциально опасное значение Request.Form было обнаружено на клиенте.
Обратите внимание, что это стандартная функциональность ASP.NET. Он не подключен к WIF.
Ответ 4
В 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))