ScriptResource错误:我被黑了吗?

时间:2009-06-01 11:35:21

标签: .net scriptresource.axd

我在其中一个网站上遇到这样的错误。它往往会在一天中随机发生,直到我不希望网站上的用户。

始终来自不同的IP地址

  

System.Web.HttpException:无效   视图状态。在   System.Web.UI.Page.DecryptStringWithIV(字符串   s,IVType ivType)at   System.Web.UI.Page.DecryptString(字符串   多个)

  

System.Security.Cryptography.CryptographicException:   填充无效,不可以   除去。在   System.Security.Cryptography.RijndaelManagedTransform.DecryptData(字节[]   inputBuffer,Int32 inputOffset,Int32   inputCount,Byte []& OutputBuffer中,   Int32 outputOffset,PaddingMode   paddingMode,Boolean fLast)at   System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(字节[]   inputBuffer,Int32 inputOffset,Int32   inputCount)at   System.Security.Cryptography.CryptoStream.FlushFinalBlock()   在   System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(布尔   fEncrypt,Byte [] buf,Byte []修饰符,   Int32 start,Int32 length,IVType   ivType,Boolean useValidationSymAlgo)   在   System.Web.UI.Page.DecryptStringWithIV(字符串   s,IVType ivType)at   System.Web.UI.Page.DecryptString(字符串   多个)

他们发生在这个页面中:

 ScriptResource.axd?d=VVe1O4rzLSI9hB5nRzBXZxUYTQz6ylDTL9djGR

该站点用户使用Ajax并在.NET 3上运行。

这个人是否试图入侵该网站?这是网站上的HTML错误吗?

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

我认为此错误是由使用过时的ViewStateUserKey解密ViewState引起的。

删除这些错误分为两步:

  1. 确保您拥有特定于站点的验证密钥。您可以使用多个在线资源为您生成一个,例如this one
  2. 确保页面的ViewStateUserKey始终保持一致。来自MSDN文档:
  3.   

    设置ViewStateUserKey属性可以帮助您防止恶意用户对您的应用程序的攻击。它通过允许您为单个用户的视图状态变量分配标识符来实现此目的,这样他们就无法使用该变量来生成攻击。您可以将此属性设置为任何字符串值,例如用户的会话ID或用户的经过身份验证的名称。

    您可以自己设置(可能在您的Page或基页的Init事件中):

    if (Session["ViewStateUserKey"] == null)
    {
        Session["ViewStateUserKey"] = new Guid().ToString();
    }    
    this.Page.ViewStateUserKey = Session["ViewStateUserKey"].ToString();
    

    不,我不认为你被黑了。