2009-03-06 64 views
9

我對ASP.NET很新。我最近在我的網站上設置了自動發送的電子郵件,以通知我一個未處理的例外情況。就在幾小時前的3分鐘內,有10個未處理的異常,所有的堆棧跟蹤都是相似的。在我看不懂的錯誤信息中有很多,但我不喜歡這種方式。這是試圖破壞我的ASP.Net網站的安全嗎?

這裏是電子郵件消息之一:

An unhandled exception occurred: 
Message: Padding is invalid and cannot be removed. 

Stack Trace: 
    at System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) 
    at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) 
    at System.Security.Cryptography.CryptoStream.FlushFinalBlock() 
    at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) 
    at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) 
    at System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

這是企圖侵入我的網站或其他什麼東西?


非常感謝那些提供了答案和評論提供的指出我在正確的方向得到這個例外的答案。原因可能很難確定,特別是當不在網上農場發生時。

IE 5.5並沒有像我之前想的那樣引起問題。

這不是很容易找到,但在我的網站主持人論壇上的一個職位提到了Viewstate錯誤報告。原因歸因於asp工作進程或服務器回收。

asp工作進程設置引用machine.config文件中的processModel元素。有關更多信息,請參閱http://msdn.microsoft.com/en-us/library/7w2sway1(VS.80).aspx

建議的修復方法是在web.config文件中設置加密的machineKey。 Machine Key節點位於system.web元素中。

這很容易完成並解決了問題,這要歸功於具有MachineKey生成器的方便的ASP.NETResources站點。見http://www.aspnetresources.com/tools/keycreator.aspx

回答

8

當程序集資源處理程序獲取無效請求時,會引發此異常。這不可能與任何惡意活動有關;它通常是由服務器上配置錯誤的機器配置造成的。

一些背景資料:

ASP.NET具有內置的機制,用於經由一個HttpHandler從組件(DLL)暴露資源。資源(如JavaScript和圖像)可以作爲文本存儲在程序集中,並由瀏覽器通過.axd處理程序請求。但出於安全原因,處理程序不接受資源的純文本位置,這可能會暴露關於代碼如何工作的線索。相反,它使用服務器上machine.config中的信息來加密資源的唯一標識符。當請求資源時會拋出此異常,但是當服務器試圖解密提供的標識符時,它將失敗。

+0

謝謝你的迅速和翔實的答案。有什麼我需要做的,以防止這種異常再次發生?另外,我最終了解了try,catch的基本知識,但我對處理spefic異常知之甚少。 – PatrickWood 2009-03-06 06:52:29

+0

@hunterpaw服務器事件查看器應該有導致錯誤的特定URL。它應該看起來像/WebResource.axd?d={gibberish}。如果是這樣,請閱讀machineKey設置以驗證您的設置是否正確:http://msdn.microsoft.com/en-us/library/ms998288.aspx – 2009-03-06 07:00:56

2

錯誤是因爲您的appdomain被回收/重新啓動。當發生這種情況時,應用程序和機器鍵被設置爲自動,它會改變。這會影響資源url(.axd)的url中信息的解密。設置一個固定的機器鑰匙將防止它再次發生。

請在類似情況下獲得更多信息檢查這個(對此的解釋是與視圖狀態驗證的問題,但原因是同一個): http://www.developmentnow.com/blog/InvalidViewstate+Or+Unable+To+Validate+Data+Error.aspx

詩篇。這解釋了它在單臺服務器上的部署:) - 雖然解決方案對於多臺單服務器都是相同的,但修復通常只解釋爲使所有服務器使用相同的機器密鑰。

更新1:填充是無效的消息與css填充沒有關係。如果它只發生在ie 5.5上,那麼很可能webresource.axd的參數會被搞亂,就像在這個問題中一樣:Invalid Webresource.axd parameters being generated