2015-12-15 74 views
0

嘗試登錄時,用戶正在收到「潛在危險的request.form值已檢測到」錯誤消息。我在logon.aspx頁中設置了validateRequest =「false」以及web.config的「位置」中的以下內容:「檢測到潛在危險的request.form值」

<location path="~/Account/Logon.aspx"> 
    <system.web> 
     <pages validateRequest="false" /> 
     <httpRuntime requestValidationMode="2.0" /> 
     <authorization> 
     <allow users="?" /> 
     </authorization> 
    </system.web> 
    </location> 

用戶仍然收到錯誤消息。我問他在他的密碼中有什麼特殊字符,他有「&」,「#」和「(」,其中沒有一個會產生這個錯誤(我的#和*有)我還有什麼可以嘗試嗎?

幾乎所有的建議,以解決這個問題,包括那些在這個網站,建議使用「validaterequest =假」,這似乎並沒有幫助。溶液

+1

是他的密碼' 「降表用戶」'? ;) –

+0

我不確定你可以只爲一個位置設置'requestValidationMode'。這改變了整個應用程序的整個管道。 – Matthew

+0

用戶標識和密碼被傳遞給LDAP進行認證。 「drop table users」很可能會失敗認證。 – NoBullMan

回答

0

兩部分組成。起初添加到您的控制器的方法ValidateInputAttribute:

[ValidateInput(false)] 

第二部分是比較困難的你應該在你的代碼手動驗證值確保塔。 t用戶輸入中沒有SQL注入。

UPDATE 對於ASP.NET Web窗體在這個例子中使用ValidateRequest標籤到您的網頁,如:

<%@ Page language="c#" Codebehind="LoginForm.aspx.cs" 
ValidateRequest="false" AutoEventWireup="false" 
Inherits="Junk.WebForm1" %> 
+0

謝謝Vadim,但這不是一個MVC應用程序。 – NoBullMan

+0

@NoBullMan呵呵。您是否嘗試在aspx頁面中添加validateRequest =「false」標記? –

+0

是的,我做到了。其實用戶剛剛告訴我,當他改變他的密碼,包括「&」和「#」,通過改變從「&#」到「#&」的順序,他能夠登錄沒有錯誤。所以,即使我指定了「validateRequest = false」,也有一些關於「&#」的內容會產生這個錯誤。 – NoBullMan

相關問題