【问题标题】:asp.net error: This is an invalid webresource requestasp.net 错误:这是一个无效的网络资源请求
【发布时间】:2011-04-01 20:20:59
【问题描述】:

我从网络场中的一个 asp 服务器收到大量错误警报,并且所有服务器的 web.config 文件中都有相同的机器密钥。 我环顾四周,但没有找到确切的答案。欢迎提出任何建议。

感谢您考虑这个问题!

以下是一些错误堆栈(查询字符串不是来自我们的应用程序,可能是其他内容的一部分):

错误信息:这是无效的 网络资源请求。堆栈跟踪:
在 System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext 上下文)在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean & completedSynchronously) 来源:System.Web 方法:Void System.Web.IHttpHandler.ProcessRequest(System.Web.HttpContext) 页面:查询字符串:d=hAGTq1Iohid

这些可能是在修补 Win 2003 服务器时启动的。后来 dot.net 框架安装在其他三台服务器上,但没有安装在抛出错误的那一台上。

大部分错误似乎与解密有关,但同一网络场中的所有服务器现在其网络配置中的机器密钥相同。但这并没有阻止错误。

也看到了:

"Length of the data to decrypt is invalid"
Error message: Length of the data to decrypt is invalid. Stack trace: 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, Boolean useValidationSymAlgo) at System.Web.UI.Page.DecryptString(String s) at 
    System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessReques­t(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.I­ExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

还有

"Invalid length for a Base-64 char array"
Error message: Invalid length for a Base-64 char array.
Stack trace:    at System.Convert.FromBase64CharArray(Char[] inArray, Int32 offset, Int32 length)
   at System.Web.HttpServerUtility.UrlTokenDecode(String input)
   at System.Web.UI.Page.DecryptString(String s)
   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)
Source: mscorlib
Method: Byte[] FromBase64CharArray(Char[], Int32, Int32)

还有

"Invalid view state"
Error message: Invalid viewstate.
Stack trace:    at System.Web.UI.Page.DecryptString(String s)
   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)
Source: System.Web
Method: System.String DecryptString(System.String)

再次感谢大家。

【问题讨论】:

  • 将此信息添加到您的问题中,以便更好地格式化。

标签: asp.net


【解决方案1】:

我不能确定,但​​这看起来像是试图利用非常严重的.NET 'Padding Oracle' Crypto Attack,discussed by Scott Guthrie 的黑客尝试。有a patch available,所以如果你发现你的服务器确实易受攻击,请确保立即修补它,如果它实际上已经受到攻击,请采取损害控制措施。

这也可能是由您的应用程序问题引起的。但是,如果您突然看到大量此类错误,尤其是最近没有对您的应用程序进行任何更改,我首先想到的是入侵尝试。用于利用此漏洞的方法会产生与解密和错误数据长度相关的错误。

【讨论】:

  • 投反对票的人愿意解释一下吗?这是一个合法的安全问题,也是 OP 问题的可能原因。
【解决方案2】:

如果此服务器是唯一一个既未打补丁又显示错误的服务器,那么我要做的第一件事就是在其上运行所有 Windows 更新。

实际上,让我让这个陈述变得不那么复杂:如果这个服务器没有打补丁,从那里开始并应用它们。

更新
您提到服务器正在引发视图状态长度错误。我们发现的一件事是,几个组件,特别是数据网格,将大量数据推入视图状态。另一件事是,几个浏览器会根据长度阻塞这个,而不是把它全部发回去。

在我们对 web.config 进行了特定的更改后,这个问题就完全消失了。甚至 Safari 3 也开始正常工作。转到<system.web> <pages /> 节点并进行以下更改:

<pages maxPageStateFieldLength="500" />

这将导致视图状态在多个隐藏字段中被分解,每个隐藏字段为 500 字节。这是一个自动拆分,因此您无需更改任何常规代码即可支持它。

您可能会使用该值,但本质上某些浏览器只能在每个输入字段中发送回这么多数据。根据我看到的版本,当这些值远远超过 700 字节左右时,safari 窒息。防火墙和代理服务器也可能会导致问题。有关更多信息,请参阅以下内容:http://weblogs.asp.net/lduveau/archive/2007/04/17/viewstate-chunking-in-asp-net-2-0-maxpagestatefieldlength.aspx

另一种选择是将视图状态缓存在本地,并且根本不通过网络发送它。当然,这对网络农场场景有影响,所以选择你的毒药。

【讨论】:

  • 谢谢大家,不胜感激。好吧,它们都处于相同的 Windows 补丁级别。该应用程序是 asp.net 2.0,场中的三台服务器安装了 .net 3.5,一台没有。没有 3.5 的会抛出绝大多数错误,但其他偶尔也会抛出无效的 viewstate 和 length 错误。这是一个内部网站,安全方面没有看到任何针对网络场的黑客攻击。同样,它们在配置中都有相同的机器密钥。还在寻找...
  • @omaether: 3.5 是 2.0 的扩展,所以它并不是一个真正的新框架。此外,还有一些影响 2.0 框架的错误修复
  • @omaether:查看我关于视图状态问题的答案的更新
【解决方案3】:

刚刚在一个网站上发生在我身上,原因不明:对网络资源的请求生成“无效请求”错误并且所有脚本都被破坏了。

可能是对服务器的更新,也许..

我的解决方案是转到 IIS 控制面板并为该站点生成一个新的机器密钥。 这似乎解决了问题,不管是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2019-08-17
    • 2013-04-03
    • 1970-01-01
    相关资源
    最近更新 更多