2013-11-25 23 views
3

我的HealthMonitoring爲我的網站。我的網頁的90%,在格式我的事件日誌滿了ViewState是無效的和未處理的異常

http://www.itsmywebsite.com/showproduct.aspx?id=somenumber 

我被檢查的WebEvents_events訪問表,看到我的表已滿主要有兩種錯誤

ERROR 1

0002609ad8vdf45f8daffc7de8716e32 2013-11-25 17:01:18.153 2013-11-25 11:01:18.153 System.Web.Management.WebViewStateFailureAuditEvent 9877 1455 4009 50204 Viewstate verification failed. Reason: Viewstate was invalid. C:\HostingSpaces\parthak\itsmywebsite.com\wwwroot\/ C15472-132183 http://www.itsmywebsite.com/showproduct.aspx NULL Event code: 4009 
    Event message: Viewstate verification failed. Reason: Viewstate was invalid. 
    Event time: 11/25/2013 11:01:18 AM 
    Event time (UTC): 11/25/2013 5:01:18 PM 
    Event ID: 0002609ad8vdf45f8daffc7de8716e32 
    Event sequence: 9877 
    Event occurrence: 1455 
    Event detail code: 50204 

    Application information: 
     Application domain: /LM/W3SVC/94/ROOT-1-1302342423433586 
     Trust level: Full 
     Application Virtual Path:/
     Application Path: C:\HostingSpaces\parthak\itsmywebsite.com\wwwroot\ 
     Machine name: C15472-132183 

    Process information: 
     Process ID: 28796 
     Process name: w3wp.exe 
     Account name: C15472-132183\itsmywebsitecom_web 

    Request information: 
     Request URL: http://www.itsmywebsite.com/showproduct.aspx 
     Request path: /showproduct.aspx 
     User host address: 186.xx.xxx.xx 
     User: 
     Is authenticated: False 
     Authentication Type: 
     Thread account name: C15472-132183\itsmywebsitecom_web 

    ViewStateException information: 
     Exception message: Invalid viewstate. 
     Client IP: 186.xx.xxx.xx 
     Port: 29991 
     Referer: 
     Path: /showproduct.aspx 
     User-Agent: Mozilla/4.0 (compatible; Synapse) 

的錯誤2

0034c75464ecdd32dee41996bfe 2013-11-24 13:19:52.360 2013-11-24 07:19:52.360 System.Web.Management.WebRequestErrorEvent 8727 1313 3005 0 An unhandled exception has occurred. C:\HostingSpaces\parthak\itsmywebsite.com\wwwroot\/ C15472-132183 http://www.itsmywebsite.com/showproduct.aspx?id=-1%27 System.FormatException Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 11/24/2013 7:19:52 AM 
Event time (UTC): 11/24/2013 1:19:52 PM 
Event ID: 0034c75464ecdd32dee41996bfe 
Event sequence: 8727 
Event occurrence: 1313 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/94/ROOT-1-1302342423433586 
    Trust level: Full 
    Application Virtual Path:/
    Application Path: C:\HostingSpaces\parthak\itsmywebsite.com\wwwroot\ 
    Machine name: C15472-132183 

Process information: 
    Process ID: 14932 
    Process name: w3wp.exe 
    Account name: C15472-132183\itsmywebsitecom_web 

Exception information: 
    Exception type: System.FormatException 
    Exception message: Input string was not in a correct format. 

Request information: 
    Request URL: http://www.itsmywebsite.com/showproduct.aspx?id=-1%27 
    Request path: /showproduct.aspx 
    User host address: 178.xxx.xxx.xxx 
    User: 
    Is authenticated: False 
    Authentication Type: 
    Thread account name: C15472-132183\itsmywebsitecom_web 

Thread information: 
    Thread ID: 31 
    Thread account name: C15472-132183\itsmywebsitecom_web 
    Is impersonating: False 
    Stack trace: at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 
    at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 
    at System.String.System.IConvertible.ToInt32(IFormatProvider provider) 
    at System.Convert.ChangeType(Object value, TypeCode typeCode, IFormatProvider provider) 
    at System.Web.UI.WebControls.Parameter.GetValue(Object value, String defaultValue, TypeCode type, Boolean convertEmptyStringToNull, Boolean ignoreNullableTypeChanges) 
    at System.Web.UI.WebControls.Parameter.GetValue(Object value, Boolean ignoreNullableTypeChanges) 
    at System.Web.UI.WebControls.Parameter.get_ParameterValue() 
    at System.Web.UI.WebControls.ParameterCollection.GetValues(HttpContext context, Control control) 
    at System.Web.UI.WebControls.ObjectDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) 
    at System.Web.UI.WebControls.BaseDataList.GetData() 
    at System.Web.UI.WebControls.DataList.CreateControlHierarchy(Boolean useDataSource) 
    at System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) 
    at System.Web.UI.WebControls.BaseDataList.DataBind() 
    at System.Web.UI.WebControls.BaseDataList.EnsureDataBound() 
    at System.Web.UI.WebControls.BaseDataList.CreateChildControls() 
    at System.Web.UI.Control.EnsureChildControls() 
    at System.Web.UI.WebControls.BaseDataList.get_Controls() 
    at MB.TheBeerHouse.Helpers.SetInputControlsHighlight(Control container, String className, Boolean onlyTextBoxes) 
    at MB.TheBeerHouse.Helpers.SetInputControlsHighlight(Control container, String className, Boolean onlyTextBoxes) 
    at MB.TheBeerHouse.Helpers.SetInputControlsHighlight(Control container, String className, Boolean onlyTextBoxes) 
    at MB.TheBeerHouse.Helpers.SetInputControlsHighlight(Control container, String className, Boolean onlyTextBoxes) 
    at MB.TheBeerHouse.Helpers.SetInputControlsHighlight(Control container, String className, Boolean onlyTextBoxes) 
    at MB.TheBeerHouse.UI.BasePage.OnLoad(EventArgs e) 
    at System.Web.UI.Control.LoadRecursive() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

請指導我如何防止發生這些錯誤。

更新:

最糟糕的部分是追加到url的-1%27。現在我再次檢查,它在下面的URL中使用:

http://www.itsmywebsite.com/showproduct.aspx?id=-1%27 [invalid] 
http://www.itsmywebsite.com/browseproduct.aspx?id=-1%27 [invalid] 

等等。這些網址都不存在,我的健康監測記錄了所有這些錯誤。我現在在桌子上有大約100K的人。

有效的URL是http://www.itsmywebsite.com/showproduct.aspx?id=127

如果沒有辦法阻止他們,我能處理他們在我的代碼,通過重定向或任何其他最佳實踐,使之不產生錯誤,並填寫了我的表

回答

2

錯誤1在這裏看到:Invalid viewstate error

錯誤2似乎-1'傳遞中作爲查詢字符串參數,不能被解析爲一個數字。如果你確定這個URL不是源自你的應用程序,那麼它可能是一個自動化的機器人,用來探測你的網站的漏洞。關於這一點你可以做的不多。

+0

感謝您的回答。但在那種情況下,它如何隨着每個新錯誤而包含一個新的用戶主機地址。我在我的網站上記錄了至少100,000個錯誤,並且我隨機檢查了500個錯誤,並且所有錯誤都有不同的IP地址。 – CuriousDev

+0

它可能是代碼中的參考,無意中傳遞了該查詢參數。你可以登錄'referer'頭來查看它來自哪個頁面? – SilverlightFox

+0

我很確定它來自http://www.itsmywebsite.com/showproduct.aspx,雖然這不是一個頁面。一個理想的網頁是http://www.itsmywebsite.com/showproduct.aspx?id=[somenumber]。我如何記錄引用標題? – CuriousDev

2

您曾被一個bot或一些隨機黑客在商店中尋找信用卡的SQL注入攻擊所針對。網上商店不斷受到攻擊,你的意志會有更多你能想象到的攻擊。

爲了防止這種攻擊,您可以安裝Web應用程序防火牆,如mod_security(可用於IIS和Apache)。插件將檢查提供的請求,分析它並在傳遞給您的應用程序之前停止每個攻擊意圖。

Web應用程序防火牆只是一種緩解措施,真正的解決方案是有一個安全的代碼。在這種情況下,您可以實現堆棧查詢,限制權限,驗證輸入(在這種情況下,您的應用程序應該首先捕獲錯誤,並在沒有收到Integer參數時正確處理它)並正確處理錯誤(例如顯示自定義頁面和而不是可能暴露內部信息的默認錯誤)。只是爲了命名一些。

如果您需要了解特殊情況,請告訴我。

+0

我能夠通過使用。但是,如何阻止不包含任何參數的請求,比如說這種類型的URL不包含像ID這樣的查詢字符串。正確的格式是http://www.itsmywebsite.com/showproduct.aspx?ID=xx。順便說一句,感謝mod_security信息。 – CuriousDev

+0

這就是發生在這裏的事情。我們每月幾次在工作中獲得這些信息。這是一次自動攻擊。 –

0

如果沒有辦法阻止他們,我可以處理他們在我的代碼被重定向或任何其他最佳實踐,使之不產生錯誤,並填寫了我的表

Assumming是一個'好'的機器人,就像搜索引擎一樣,那麼你只需要確保返回的http狀態是404即沒有找到。另外50倍的地位也可以。

這意味着你正在告訴潛在的搜索引擎,他們試圖訪問的任何URL都是無效的。現在,如果它真的有多個類似的網址,那麼沒有什麼能夠阻止「好」的搜索引擎檢查所有鏈接的所有鏈接內容。另一方面,如果它是一個'壞'bot爬行你的網站,那麼你不能真正阻止它。你不僅可以確保你所暴露的終點是安全的。在asp.net中,你不想禁用默認設置來檢查視圖狀態是否處於默認狀態,所以你要確保一切正常。

相關問題