脚本资源错误:我是否被黑客攻击?

7

我在我的一个网站上不断收到类似这样的错误。这种情况通常会在一天中的随机时间发生,并且在我不期望网站用户访问的夜间出现。

它始终来自不同的IP地址。

System.Web.HttpException: 无效 viewstate。位于 System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) 位置。位于 System.Web.UI.Page.DecryptString(String s) 位置。

或者

System.Security.Cryptography.CryptographicException: 填充无效且无法移除。位于 System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) 位置。位于 System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) 位置。位于 System.Security.Cryptography.CryptoStream.FlushFinalBlock() 位置。位于 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo) 位置。位于 System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) 位置。位于 System.Web.UI.Page.DecryptString(String s) 位置。

它们发生在这个页面:

 ScriptResource.axd?d=VVe1O4rzLSI9hB5nRzBXZxUYTQz6ylDTL9djGR

该网站使用Ajax技术,并运行在.NET 3上。
这是有人试图入侵该网站吗?还是该网站的HTML代码出现了错误?
有什么想法吗?
1个回答

5
我认为这个错误是由于使用过时的ViewStateUserKey解密您的ViewState引起的。
消除这些错误是一个两步过程:
1.确保您拥有站点特定的验证密钥。您可以使用多个在线资源为您生成密钥,例如此工具
2.确保页面的ViewStateUserKey始终保持一致。根据MSDN文档:
“设置ViewStateUserKey属性可以帮助您防止来自恶意用户的应用程序攻击。它通过允许您为单个用户分配标识符来为视图状态变量分配标识符,以便他们不能使用该变量生成攻击。您可以将此属性设置为任何字符串值,例如用户的会话ID或用户的经过身份验证的名称。”
您可以通过自己设置它(也许在您的Page或基本Page的Init事件中)来实现此目的:
if (Session["ViewStateUserKey"] == null)
{
    Session["ViewStateUserKey"] = new Guid().ToString();
}    
this.Page.ViewStateUserKey = Session["ViewStateUserKey"].ToString();

不,我不认为你正在被黑客攻击。


太好了,谢谢你的回答,我会试一下。这会导致用户浏览器出现错误吗? - Paul
我认为它应该会,尽管我自己从未能够复制它 - 我看到了很多记录中都有这个错误。 - Paul Suart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接