在IIS上设置请求筛选以过滤查询字符串以拒绝特殊字符,例如“>”。
甚至在链接中想到特殊字符“>”被编码为“%3c”,为什么IIS仍然拒绝该链接并生成404.18.0.0错误?
似乎IIS提前解码了网址,是否有办法阻止它这样做?
答案 0 :(得分:0)
URI中的>
始终编码为%3c
。如果你在URI中直接有一个>
它不是一个URI,它就是随机垃圾。要求>
被禁止以及%3c
被禁止是要求同样的事情。
相反,如果你在URI中有%41
,那么它有一个逃避方法的一部分,它应该被视为与你在那里A
完全相同。同样,如果你禁止A
,那么你也想禁止%41
因为它们是同一件事。 (例外情况是,在转义时,不应将URI中的/
这样的字符本身视为重要字符。
由于禁止>
是为了避免XSS和其他安全漏洞,如果>
在URI中未转义有效,您仍然希望禁止%3c
确保>
1}}没有潜入无法处理它的任何东西。
相比之下,大约2000个IIS,其中一些设置曾经(错误地)将%c0%af
视为/
(错误的是UTF-8过长)但阻止/../
阻止阅读的代码webroot之外的文件没有将其视为/
,因此块没有阻塞,并且确实可以从与webroot相同的驱动器上的任何位置读取文件。您在询问是否有一种方法可以使您的系统同样容易受到使用%3c
的攻击,而不会受到使用>
攻击的攻击。即使这对URI有任何意义,也很难理解为什么这样做是可取的。