2011-09-30 73 views
16

我在使用WIF時也收到請求驗證錯誤。我正確地發送到STS,但在回來的路上,我得到這個驗證錯誤。從客戶端檢測到有潛在危險的Request.Form值(wresult =「<trust:RequestSecuri ...」)

我遵循了所有的指示。

<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 

有什麼建議?

+0

更好的方法是添加一個特定的驗證器,如[本答案](http:// stackoverflow)中所述。COM /問題/ 5443563 /潛在危險請求外形在-wsfederationauthenticationmodule-issigninre/5446288#5446288)。 –

+0

這裏描述了處理這個問題的正確方法[1]。 [1]:http://stackoverflow.com/questions/5443563/potentially-dangerous-request-form-in-wsfederationauthenticationmodule-issigninre/5446288#5446288 –

+0

@Eugenio是的,這就是我所說的。 :-) –

回答

26
<httpRuntime requestValidationMode="2.0"/> 

在此之後添加

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

也MVC3有一個AllowHtml屬性

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

這裏有一些有用的鏈接

ASP.NET MVC – pages validateRequest=false doesn’t work?

Why is ValidateInput(False) not working?

+0

對不起,編輯注意我有頁validateRequest = false。 –

+1

出現此問題時,AllowHtml屬性爲我工作。 – kolin

+0

您的第二個鏈接對我有幫助,謝謝 – Francisco

0

在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 %> 

or in Razor:

@Model.Something 

並在某些情況下,在Javascript:

@Html.Raw(Ajax.JavaScriptStringEncode(Model.Something)) 
2

this answer如果您運行的.NET 4.5這需要內置於ASP.NET的更新請求驗證的優勢。

相關問題