客户端在其网站周围有自定义防火墙规则,以防止任何数量的攻击。其中一个自定义规则阻止所有请求(GET或POST),包括双连字符,以防止SQL注入。在昨晚更新他们的网站时,我们遇到了一个问题,即在每个页面上,对ScriptResource.axd的一次调用包含一个双连字符( - ),导致访问该脚本被拒绝。
我们之前已经看过这个问题,并且认为我们已经通过使用ScriptReferenceProfiler解决了这个问题,以便生成我们需要组合的脚本列表,以便删除这么多的脚本引用。这个问题一直持续到昨晚重新发布问题时的更新。 (有趣的是,我重新编写了ScriptReferenceProfiler,它识别的所有脚本都已包含在CompositeScript列表中,所以我不知道这个文件来自哪里。)
我最终创建了一个新的IIS虚拟目录,尽管指向与前一个虚拟目录相同的目录和代码库,但没有出现双破折号的问题。 (我将初始虚拟目录设置为重定向到新目录,以便用户不必担心更新链接或书签。)我可以从this post看到第一个参数是通过加密生成的程序集名称和资源名称,用于解释两个虚拟目录之间值的差异。
但显然,我希望将来避免这种情况。有没有人想过如何防止双重破折号出现在ScriptResource请求中?
作为参考,这发生在IIS 6. / Windows Server 2003上运行在.NET 4.0中的VB.Net网站上。另外,被拒绝的脚本文件是某种Infragistics控件。 (我暂时关闭了防火墙规则以获取文件,然后重新启用它。但我无法从脚本中告诉它在Infragistics中扮演的角色。)
感谢。