2017-01-23 105 views
0
  1. 在IIS上设置请求筛选以过滤查询字符串以拒绝特殊字符(例如“>”)。为什么IIS拒绝编码字符

  2. 甚至认为在特殊字符“>”编码为“%3c”的链接中,为什么链接仍然被IIS拒绝并生成404.18.0.0错误?

  3. 似乎IIS提前解码url,有什么办法阻止它这样做?

回答

0

在一个URI中的一个>总是编码为。如果你直接在一个URI中有一个>它不会是一个URI,它会是随机的垃圾。要求禁止>并禁止要求同样的事情。

相反的是,它是有逃避,如果你在一个URI有%41它应该被视为完全一样的一种手段,如果你有A有整点的一部分。同样,如果你禁止A,那么你也想禁止%41,因为它们是一样的。 (例外的是,像/这样的字符本身在URI中的重要性在转义时不应该被当作这样处理)。

由于禁止>的一点是要避免XSS和其它的安全漏洞,如果>是有效的转义的URI你仍然要禁止确保>没有潜入不管它是不能处理它。

比较地,在2000年左右与IIS使用一些设置(错误地)把%c0%af/(在不正确的UTF-8是超长),但受阻/../读取文件的根目录以外的代码没有把它看成/所以该块没有阻塞,并且确实可以从webroot的相同驱动器上的任何位置读取文件。您在询问是否有一种方法可以使您的系统同样容易受到使用的攻击而不会受到使用>的攻击的攻击。即使这对于URI来说有意义,也很难看出为什么这是可取的。