我管理一个.NET webforms网站,这个网站在我工作之前就有一个奇怪的问题。它偶尔会抛出一个 System.Web.HttpException:从客户端(:)错误电子邮件中检测到一个潜在危险的Request.Path值。
错误来自网站中随机页面的随机部分,而我注意到的最后一个部分是针对CGI script_name的此条目:
SCRIPT_NAME /Scrienu_6 { border-style:none; }.SystemMenu_7 { background-color:
查看页面的渲染代码,它看起来像是在响应的头部附近丢弃了一个数据包,它正在将脚本标记的src部分的末尾切换到内联样式块的中间位置。 / p>
<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分......耶!)
答案 0 :(得分:0)
您的请求网址是否有*, 这可能会导致这种情况。
**
<system.web>
<httpRuntime requestPathInvalidCharacters="<,>,%,&,:,\,?" />
</system.web>
**
您可以将此添加到您的网络配置中以使其正确
答案 1 :(得分:0)
可能是文件加载器的问题还没有得到很好的管理。
如果您使用任何编辑器上传内容,则可能会遇到其他潜在危险请求。如果这是场景,你需要管理。 您可以在使用编辑器的页面上禁用验证。 您可以像这样在web.config中描述验证模式。
答案 2 :(得分:-2)
添加
<pages validateRequest="false"/>
。