我管理一个 .NET webforms 网站,自从我在这里工作之前就出现了一个奇怪的问题。它时不时地抛出一个 System.Web.HttpException:从客户端 (:)错误电子邮件中检测到潜在危险的 Request.Path 值。
该错误来自站点内随机页面的随机部分,我注意到的最后一个有此条目针对 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 分......耶!)