加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为什么Glimpse会禁用请求验证?

发布时间:2020-12-16 09:54:42 所属栏目:asp.Net 来源:网络整理
导读:我发现请求验证无法在我的PC上运行,这意味着它的行为与我们的实时Web服务器不同.经过一些实验,看起来Glimpse就是原因(Glimpse的版本还没有上线,这就是现场服务器工作正常的原因). 例如这个恶意网址: http://website/?foo=script …应该导致以下错误: A pot
我发现请求验证无法在我的PC上运行,这意味着它的行为与我们的实时Web服务器不同.经过一些实验,看起来Glimpse就是原因(Glimpse的版本还没有上线,这就是现场服务器工作正常的原因).

例如这个恶意网址:

http://website/?foo=<script>

…应该导致以下错误:

A potentially dangerous Request.QueryString value was detected from the client (foo=”<script>”).

但是,一旦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安装它,问题立即显现.

我也注意到我通过设置< glimpse defaultRuntimePolicy =“Off”/>来瞥见了.在Web.config中,然后请求验证也正常启动.

解决方法

请求验证在ASP.NET中的工作方式是验证输入,并且仅在第一次调用Request.RawUrl,Request.QueryString等时抛出异常. Glimpse在请求的早期查找查询字符串(来自RequestMetadata.get_RequestIsAjax)并吞下该异常,因此将不会验证在同一请求上下文中对Request.QueryString的未来调用.

FWIW,ASP.NET团队已拒绝请求验证.有关更多信息,请参见http://www.asp.net/aspnet/overview/web-development-best-practices/what-not-to-do-in-aspnet,-and-what-to-do-instead#validation.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读