启用双重转义有危险吗?

我有一个ASP.NET MVC应用程序,其路由允许通过/ search / 搜索内容。

当我提供“ search / abc”时,它运行良好,但是当我提供“ / search / a + b +

c”(正确的url编码)时,IIS7拒绝请求,并显示HTTP错误404.11( 请求过滤模块配置为拒绝包含双重转义序列的请求

)。首先,为什么要这样做?如果它只是URL的一部分,但似乎不是查询字符串的一部分,似乎只会引发错误(/ transmit?q = a + b +

c可以正常工作)。

现在,我可以在web.config的安全性部分中启用双重转义请求,但由于我不了解其含义,而且我也很犹豫,因此服务器也拒绝将请求“ a + b +

c”拒绝为URL的一部分,但接受作为查询字符串的一部分。

有人可以解释并给出建议怎么办吗?

回答:

在相关部分增加了重点。

基本上:IIS过于偏执。如果您对uri解码的数据没有做任何特别不明智的事情(例如通过字符串串联生成本地文件系统URI),则可以安全地禁用此检查。

要禁用该检查,请执行以下操作(从此处开始):(请参阅下面的评论,以了解需要进行何种双重转义)。

<system.webServer>

<security>

<requestFiltering allowDoubleEscaping="true"/>

</security>

</system.webServer>

最后,一个非常简单的方法(如果受限制的话)只是避免使用“ +”,而是使用“%20”。 ,而是特定于一组有限的协议,并且可能由于向后兼容的原因而得到广泛支持。如果仅出于规范化目的,最好还是将空格编码为’%20’。并且很好地避开了IIS7问题(对于其他序列,例如%25ab,它仍然可以冒出来)。

以上是 启用双重转义有危险吗? 的全部内容, 来源链接: utcz.com/qa/424560.html

回到顶部