我在其中一个网站上遇到这样的错误。它往往会在一天中随机发生,直到我不希望网站上的用户。
始终来自不同的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错误吗?
有什么想法吗?
答案 0 :(得分:5)
我认为此错误是由使用过时的ViewStateUserKey解密ViewState引起的。
删除这些错误分为两步:
设置ViewStateUserKey属性可以帮助您防止恶意用户对您的应用程序的攻击。它通过允许您为单个用户的视图状态变量分配标识符来实现此目的,这样他们就无法使用该变量来生成攻击。您可以将此属性设置为任何字符串值,例如用户的会话ID或用户的经过身份验证的名称。
您可以自己设置(可能在您的Page或基页的Init事件中):
if (Session["ViewStateUserKey"] == null)
{
Session["ViewStateUserKey"] = new Guid().ToString();
}
this.Page.ViewStateUserKey = Session["ViewStateUserKey"].ToString();
不,我不认为你被黑了。