【问题标题】:Invalid Webresource.axd parameters being generated生成的 Webresource.axd 参数无效
【发布时间】:2009-01-20 14:48:59
【问题描述】:

原问题:

我们在生成 WebResource.axd 网址时遇到了一个奇怪的错误。 (这似乎与相当常见的“WebRsource.axd Padding is invalid and cannot be removed”问题无关)。

我们有一个 ASP.NET 网页,该网页在创建时会添加对 WebResource.axd 的脚本引用。

在这种情况下,我们看到 WebResource.axd 链接偶尔会在某个时间点变成垃圾,并被看起来像 javascript 的内容所取代。更糟糕的是,url 生成失败似乎并不一致。

在我们的例子中,链接应该(通常确实看起来像):

/WebResource.axd?d=D-wd7RbHCvSp_p0mHAmE4g2&t=633464867255568315

一切顺利。但是,我们收到用户记录的错误......他们尝试访问的 url 看起来像(在一种情况下):

/WebResource.axd?d=D-wd7RbHCvS/../../images/icons/Ico_resize.gif')}}function%20ShowFilter_Manufacturer(){var%20div.......

[该链接中剩余的编码 javascript 已被删除,因为不相关]

更奇怪的是,我们从同一个用户那里快速连续获得了其中一些,显然他正在尝试重新加载页面......每个网址都略有不同。

/WebResource.axd?d=D-wd7RbHCvS<garbage>
/WebResource.axd?d=D-wd7RbHCvSp<garbage>
/WebResource.axd?d=D-wd7RbHCvSp_<garbage>

在某些情况下,垃圾是用 JavaScript 编码的,我看到了 url 的一部分...完全为空的参数字符串...我没有看到明显的模式。

顺便说一句,如果它是相关的,应该注意的是,我不相信这个 WebResource 只是一个股票 WebResource 之外的任何东西,当页面上包含某些功能时,它会自动包含在 .NET 中......在这种情况下,一个字段验证器。查看实际 WebResource.axd 的内容会发现一组看起来非常标准的 Javascript 函数,这些函数似乎旨在处理通用 .NET 事件。不是我们创造的任何东西。

有人见过这样的吗? (或者更好的是,有没有人理解为什么会发生这种情况,并想出一种方法来消除它?)

编辑 0: 一些附加信息:

第 1 项:针对一个答案,我们确保我们的脚本是用 CDATA 标记封装的,因为我们的 doctype 是 xhtml 过渡:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

不幸的是,虽然我们寄予厚望,但它似乎并没有解决问题。我们在 IE 8 作为浏览器时更经常注意到这一点,这会让人相信这是与浏览器相关的想法......也许是浏览器解析流的方式......但是为什么我们会得到微妙的不同响应在随后的尝试中让我感到困惑。

第 2 项: 事实证明,省略的部分似乎是相当规则大小的块。有人报告说他看到 1k 或 4k 块丢失了,我(到目前为止……我只看过两个案例)会同意(我的都丢失了 4096 字节的数据)。

【问题讨论】:

标签: asp.net webresource.axd invalid-url


【解决方案1】:

根据这篇文章:

http://bytes.com/topic/asp-net/answers/861764-invalid-viewstate-system-string-decryptstringwithiv

问题似乎是由于未指定文档类型时浏览器呈现页面的方式不同造成的。

这是我在这个主题上找到的另一篇有趣的帖子,但仍然不是解决方案:

http://blog.aproductofsociety.org/?p=11

在上面的页面上,它在 cmets 中将“Response.Cache.SetNoStore()”作为可能的解决方案,我接下来会试试看是否有帮助。

【讨论】:

  • 神圣的通心粉!我几乎要放弃这个了。我现在要去试试这个。我现在正在投票,但如果这能解决问题,我希望我能多次投票。谢谢,不管怎样。
  • 啊。没有骰子。我怀疑这可能是对某些人有用的答案,但我们仍然遇到同样的问题......(尽管我预计根本原因可能仍然相同......)
  • 是的,我们这里也有这个问题,这是我发现的有趣的东西blog.aproductofsociety.org/?p=11
  • 嘘。好吧,由于到目前为止我在这方面什么都没有,所以默认情况下你可能会得到 200 个代表!
  • 如果你愿意,你会去connect.microsoft.com/VisualStudio/feedback/…,并给予高度评价,以便我们有更大的机会解决这个问题吗?
【解决方案2】:

微软已对此问题作出回应:

注意是 Internet Explorer 8 中的一个错误。Internet Explorer 团队一直在调查此问题。

-=影响=- 到目前为止,我们认为该问题不会影响最终用户使用 Web 应用程序的体验;唯一的负面影响是 JavaScript 推测下载引擎发送的虚假/格式错误的请求。当解析器实际需要该脚本时,该脚本将被正确下载和使用。

-=Circumstances=- 虚假请求似乎仅在某些时间情况下出现,仅当包含带有 CHARSET 指令的 Content-Type 的 META HTTP-EQUIV 标记出现在文档中时,并且仅当 JavaScript SRC URL 出现时跨越 HTTP 响应正文的第 4096 个字节。

-=Workaround=- 因此,我们目前认为可以通过使用 HTTP Content-Type 标头声明页面的 CHARSET 而不是在页面中指定它来缓解此问题。

所以,而不是放

[META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"]

在您的 head 标记中,发送以下 HTTP 响应标头:

内容类型:文本/html;字符集=utf-8

请注意,HTTP 标头中的字符集规范会提高所有浏览器的性能,因为浏览器的解析器在遇到字符集声明时无需从头重新开始解析。此外,使用 HTTP 标头有助于缓解某些 XSS 攻击向量。

注意:据报道,当 META HTTP-EQUIV 不在页面上时,仍然会发生此问题。当我们进行更多调查时,我们将更新此评论。 Microsoft 于 2009 年 6 月 30 日下午 12:25 发布

【讨论】:

    【解决方案3】:

    我来自 ASP.NET 团队——我们正在寻找愿意与我们合作研究此问题的客户。如果有人能够通过请求自己的页面和检查日志来可靠地重现问题,并且愿意与我们的支持小组合作,请回复或直接给我发送消息。谢谢!

    【讨论】:

    • 这是前段时间写的,经过大量调查和其他人的证实,发现这实际上是一个 IE 8.0 问题。尽管如此,当我们说我们希望有直接参与的人来看看时,我想我代表每个人。有什么好的方法可以引起 IE 8 团队的注意吗? IE 的 Microsoft Connect 论坛似乎已关闭,并且没有想到其他明显的途径。
    • 是的,如果您能提供任何重现,一个好方法是与我联系。我来自 ASP.NET 团队的事实并不意味着 IE8 团队没有参与——我们正在使用我们能找到的任何资源,包括 IE 人员。这个connect bug也是一个添加信息的好地方:connect.microsoft.com/VisualStudio/feedback/…
    【解决方案4】:

    您正在针对哪个版本的 .NET 进行编译?如果您将构建更改为针对较旧或较新版本构建会发生什么? (不确定这是否会做任何事情,但值得一试)

    如果它仍然发生,我认为你应该在Microsoft Connect 上发布一个关于它的错误。他们应该很快就会回复您。

    【讨论】:

    • 更改 .NET 版本:遗憾的是,这不是我们的选择... Microsoft Connect:我会试一试!
    • 我收到了回复,他们(Microsoft Connect)正在调查这个问题......希望他们不会只是说“我们无法重现它”并关闭它。
    【解决方案5】:

    您是否有在 Web 配置中注册的任何 HttpHandler 或模块,它们在将呈现的 HTML 发送给用户之前对其进行修改?

    这些通常是:

    • 缩小 JS 和 CSS
    • 确保 HTML 有效

    可能值得一看。

    【讨论】:

    • 好主意,但我有 95% 的把握答案是否定的。但我肯定会四处打听。
    【解决方案6】:

    这是一篇旧帖子...但我通过谷歌搜索发现并提醒了我...

    http://www.troyhunt.com/2010/09/fear-uncertainty-and-and-padding-oracle.html

    可能是相关的吗?

    【讨论】:

      【解决方案7】:
      猜你喜欢
      • 2010-11-01
      • 1970-01-01
      • 2014-11-10
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      相关资源
      最近更新 更多