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