启用双重转义有危险吗?
我有一个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