渲染输出中缺少 HTML 块

Posted

技术标签:

【中文标题】渲染输出中缺少 HTML 块【英文标题】:Block of HTML missing from rendered output 【发布时间】:2013-09-25 07:06:20 【问题描述】:

我管理一个 .NET 网络表单网站,自从我在这里工作之前就出现了一个奇怪的问题。它时不时地抛出一个System.Web.HttpException: A潜在危险的Request.Path value was detected from the client (:) 错误电子邮件。

错误来自站点内随机页面的随机部分,我注意到的最后一个是针对 CGI script_name 的条目:

SCRIPT_NAME /Scrienu_6  border-style:none; .SystemMenu_7  background-color:

查看页面的渲染代码,看起来一个数据包已被丢弃在响应的头部附近,并且它正在切断脚本标记的 src 部分的末尾,直至通过内联样式块的中途。

<script type="text/javascript" src="../Scripts/DisableTheScreen.js"></script>
<style type="text/css">
.floatingMenu

margin-top: 0px;

</style>
<link href="../App_Themes/siteTheme/Button.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/ConfirmBox.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/DisableBox.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/Panel.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/ResizableTextBox.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/Site.css" type="text/css" rel="stylesheet" />
<link href="../App_Themes/siteTheme/Tabs.css" type="text/css" rel="stylesheet" />
<style type="text/css">
.SystemMenu_0  background-   color:white;visibility:hidden;display:none;position:absolute;left:0px;top:0px; 
.SystemMenu_1  color:White;font-weight:bold;text-decoration:none; 
.SystemMenu_2  color:White;font-weight:bold; 
.SystemMenu_3  
.SystemMenu_4  background-color:#004A80; 
.SystemMenu_5  background-color:#004A80; 
.SystemMenu_6  border-style:none; 
.SystemMenu_7  background-color:#004A80;  

所以它最终会从中间切出一个 chnk,例如:

<script type="text/javascript" src="../Scri

enu_6  border-style:none; 
.SystemMenu_7  background-color:#004A80;  

过去,我曾见过丢包对图像和未加载的 CSS 文件做有趣的事情,但我从未见过它们会从渲染的页面内容中切出部分内容。我已经用谷歌搜索了很多问题,但没有找到类似的东西,所以不确定我是否在寻找正确的问题。

在过去 5 个月中,该问题仅在一个使用率相当高的系统上触发了 22 次,但它的发生频率可能​​比这更频繁,因为我们只会在对服务器的回调被认为是字符的情况下才会看到错误请求验证器不安全。

是的,只是想知道是否有人对我可以做什么或寻找解决这个问题有任何想法? :)

在 IIS7/Win2k8 中观察到此行为。据报道,它也在 IIS8/Win2k12 和 IIS8/Win8.1 中被观察到。我在 IIS6/Win2k3 中没有看到这方面的证据。我的两个不同客户最后一次报告它是在 2013 年 11 月左右。这两个服务器环境都没有安装 VisualStudio。 .NET Framework 2.0、3.5 和 4.5[1?] 都安装在两个服务器环境中。

我已向两位客户索取日志和完整规格,其中一位已回复并确认问题不再发生。因此,我怀疑来自 Msft 的更新或修补程序解决了它,它与网络相关并且已经解决,或者 Cthulhu 决定折磨其他人。另一位客户尚未回应。

除了 OP 和这些客户之外,肯定还有其他人看到了这种行为吗?如果可能的话,最好找到一个明确的答案并将这个问题与已知的修复联系起来。 (你得到一个甜蜜的 200 分......耶!)

【问题讨论】:

不确定这是否与您的情况有关,但可以在 link 找到类似问题的报告 啊,谢谢吉姆,看起来确实很相似,从 VS2010 到 2012 的更改可能会产生一些影响。不过,我们在任何开发盒上都没有遇到这个问题,只是在我们的 IIS 7 生产服务器上。我无法尝试该帖子中的任何建议更改,因为我们现在处于更改冻结状态,但该网站正在为 MVC 重建,因此希望在我们的下一个版本中解决。 问题的核心是丢失了整个 HTTP 响应块。更改内容是无关紧要的,因为它可以在大多数环境中使用完全相同的代码和内容。 我讨厌指出明显的问题,但如果没有更多证据就无法解释问题;你会得到什么只是猜测。你有没有看过这个其他的 SO 链接:What can cause TCP/IP to drop packets without dropping the connection? 你发这个很有趣,我的一个同事也有类似的问题。在 IIS 中打开压缩可以修复它,但我们不确定它为什么会起作用。看看它是否适合你? 【参考方案1】:

您的请求网址是否有任何 *, 这可能会导致这种情况。

**

<system.web>
    <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,%,&amp;,:,\,?" />
</system.web>

**

您可以将其添加到您的网络配置中以使其正确

【讨论】:

您还可以链接到您从中获取此信息的来源吗?还是经验之谈? no 这个网站的 URL 肯定没有特殊字符。这是我们自始至终检查的第一件事 :) 用户也不会在地址中添加时髦的东西,除非我们要求他们这样做。 您的网络表单中是否有文件上传部分.....在执行此类操作时管理不善,您可以看到这一点,因为我遇到了这样的问题 系统有的文件上传区域均未出现错误。它主要发生在我们的内部搜索屏幕上 - 但我认为这主要是因为它是每个人开始并在完成任何操作后重新打开的页面。 你能不能把iis设置发过来,这样更清楚。如果可能的话,堆栈跟踪......太【参考方案2】:

可能是文件上传器管理不好的问题。

如果您使用任何编辑器上传内容,则可能会出现其他潜在危险的请求。如果是这种情况,您需要进行管理。 您可以在使用编辑器的页面上禁用验证。 您可以像这样在 web.config 中描述验证模式。

【讨论】:

我不相信它与文件上传有关,因为它可以出现在网站的任何地方,但主要出现在纯搜索屏幕上(主要是因为这是网站上最热门的页面)。问题不在于用户试图向该站点发送不可靠的 URL,而是该站点为他们提供了格式错误的代码,这些代码有时会截断脚本和样式表链接中的 URL,从而使他们从标签末尾丢失了一大块并在他们尝试从服务器加载任何资源时包含以下代码作为 URL 的一部分。哇,这是一个连续的句子,对不起:)【参考方案3】:

添加

&lt;pages validateRequest="false"/&gt;

在 web.config 中。

【讨论】:

不!这是一个坏主意,这将禁用 ASp.NET 的默认请求验证,如果在生产中完成,则会打开一个安全漏洞。你问的是 XSS 和 CSRF 麻烦:) 正如 JackOfAllTrades 所说,如果你这样做,你就是在自找麻烦。请求验证的发生是有充分理由的,并且只应在具有替代保护的特殊情况下禁用。否则,您的站点,以及服务器上可能的其他站点,对跨站点脚本攻击和各种其他有害的 :) 是开放的 :) @user2910624,如果我说的话听起来很粗鲁,我只想告知危险,我深表歉意。

以上是关于渲染输出中缺少 HTML 块的主要内容,如果未能解决你的问题,请参考以下文章

SVG 与 HTML5 的 canvas 各有啥优点,哪个更有前途

SRSS 2008 R2 的 C# 报告渲染器 - 缺少参数

渲染 Django xml 模板(不是 html),如何创建没有换行符的输出?

SketchFX一键渲染小清新风格图

关于ThinkPHP5.0的渲染模板输出

Minecraft Forge 项目块渲染问题