【发布时间】:2014-10-03 14:49:15
【问题描述】:
我发现请求验证在我的 PC 上不起作用,这意味着它的行为与我们的实时 Web 服务器不同。经过一些实验,原因似乎是 Glimpse(带有 Glimpse 的版本尚未上线,这就是在线服务器正常工作的原因)。
例如这个恶意网址:
http://website/?foo=<script>
...应该会导致以下错误:
从客户端检测到一个潜在危险的 Request.QueryString 值 (foo="
然而,一旦 Glimpse 在 web.config “modules”部分注册,请求验证就不会发生(即使 Glimpse 已关闭),从而使网站容易受到跨站脚本攻击( XSS)。
如果我删除注册 Glimpse 的行,则请求验证立即正常工作:在 IIS 7.5 中,如下所示:
<system.webServer>
<modules>
<add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode" />
</modules>
有什么办法可以解决这个问题,或者这是 Glimpse 中的一个错误?
更新 1:
我现在已经验证,如果我将 Glimpse 全新安装到一个不相关的项目(运行 ASP.NET 4.5.1)中,就会出现问题,因此它与原始项目不兼容。我没有更改任何设置,我只是从 NuGet 安装它,问题立即显现。
我还注意到我通过在 Web.config 中设置 <glimpse defaultRuntimePolicy="Off" /> 来关闭 glimpse,然后请求验证也会正常启动。
【问题讨论】:
-
不应该这样。您能否提供有关您正在使用的 Glimpse 和 ASP.NET 版本、已安装的插件和复制步骤的信息?
-
本周我从 NuGet 安装了 Glimpse,用于 ASP.NET 4.0 Web 表单站点。然后注意到请求验证被破坏。删除 Glimpse 模块可以修复它。给我几分钟 - 我会发布更多信息。
-
即使没有注册其他模块,我也可以确认问题是可重现的。
-
它发生在我安装 Glimpse 的其他网站上。我已经用更多信息更新了问题(更新 1)。
标签: asp.net security webforms xss glimpse