用来检查 ASP.NET 规范化问题的 HTTP 模块

文章翻译 文章翻译
文章编号: 887289 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

为了帮助客户保护他们的 ASP.NET 应用程序,Microsoft 现已推出实现了规范化最佳做法的 HTTP 模块。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
887459 如何以编程方式检查 ASP.NET 的规范化问题
有关如何确定 ASP.NET 版本的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
318785 确定是否在 .NET Framework 中安装了 Service Pack

症状

当 Web 服务器收到 URL 后,该服务器将请求映射到一个确定响应的文件系统路径。用来映射该请求的规范化例程必须正确分析此 URL,以避免提供或处理不需要的内容。未处理的规范化问题可能导致意外结果。有关规范化的更多信息,请访问下面的 Microsoft Web 站点:
http://msdn2.microsoft.com/en-us/library/aa302420.aspx

解决方案

Microsoft.Web.ValidatePathModule.dll - HTTP 模块

下载信息

可以从 Microsoft 下载中心下载以下文件:

收起这个图片展开这个图片
下载
立即下载 VPModule.msi 程序包。

发布日期:2004 年 10 月 7 日

有关如何下载 Microsoft 支持文件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591 如何从联机服务获取 Microsoft 支持文件
Microsoft 已对此文件进行了病毒扫描。Microsoft 使用的是该文件发布时可以获得的最新病毒检测软件。该文件存储在安全性得到增强的服务器上,以防止对该文件进行任何未经授权的更改。

先决条件

VPModule.msi 文件是为 32 位 Microsoft .NET Framework 设计的。

安装 VPModule.msi 文件之前,请先备份您计算机中 Machine.config 文件的所有实例。要创建 Machine.config 文件的备份副本,请按照下列步骤操作:
  1. 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。
  2. 找到 Machine.config 文件的每个版本。Machine.config 文件位于以下文件夹中;其中 <framework version number> 是您已经安装的 Microsoft .NET Framework 的版本:
    %windir%\Microsoft.NET\Framework\<framework version number>\CONFIG
    例如,如果驱动器 C 上安装了 .NET Framework 1.1,则键入下面的命令,然后按 Enter 键:
    cd /d %windir%\microsoft.net\framework\v1.1.4322\config
  3. 键入下面的命令,然后按 Enter 键以创建 Machine.config 文件的备份副本:
    copy machine.config machine.config.bak
对系统中安装的每个 .NET Framework 实例重复这些步骤。

安装信息

Microsoft 已发布名为 VPModule.msi 的安装程序包。VPModule.msi 文件将在您的系统上安装 Microsoft.Web.ValidatePathModule.dll 文件。此安装将使用新的 HTTP 模块项,来更新所有已安装 .NET Framework 版本上的 Machine.config 文件。

要使用该安装程序包,请下载 VPModule.msi 文件,双击该程序包以开始安装,然后按照安装说明进行操作。

VPModule.msi 执行的操作

安装程序首先提取名为 Microsoft.Web.ValidatePathModule.dll 的文件。然后,安装程序会更新系统中所有现有的 Machine.config 文件,以使这些文件中包含与以下内容相似的项:
    <system.web>
        <httpModules>
            <add name="ValidatePathModule" type="Microsoft.Web.ValidatePathModule, Microsoft.Web.ValidatePathModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eba19824f86fdadd"/>
        </httpModules>
    </system.web>
接下来,安装程序会将 Microsoft.Web.ValidatePathModule.dll 文件添加到全局程序集缓存 (GAC) 中。

针对想要以编程方式了解 Microsoft.Web.ValidatePathModule.dll 文件执行的操作的开发人员,我们提供了以下源代码:
namespace Microsoft.Web {
??? public class ValidatePathModule : IHttpModule {
??????? public ValidatePathModule() {
??????? }
??????? void IHttpModule.Init(HttpApplication app) {
??????????? app.BeginRequest += new EventHandler(this.OnBeginRequest);
????? ??}
??????? void IHttpModule.Dispose() {
??????? }
??????? void OnBeginRequest(Object source, EventArgs eventArgs) {
??????????? HttpRequest request = (source as HttpApplication).Request;
??????????? string physicalPath = request.PhysicalPath;
??????????? if (request.Path.IndexOf('\\') >= 0 || Path.GetFullPath(physicalPath) != physicalPath) {
??????????????? throw new HttpException(404, "Not Found");
??????????? }
??????? }
??? }
}
有关可用来安装该模块的命令行开关的更多信息,请访问下面的 Microsoft Web 站点:
http://msdn2.microsoft.com/en-us/library/aa367988.aspx

安装验证信息

如果模块正确安装,将存在以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{30EFFF0C-573D-46FB-8AD5-00887289261A}
注意:如果手动安装 HTTP 模块(如“自定义安装信息”一节所述),则系统中将不存在此注册表项。/a 选项只提取文件,不更新注册表。

删除信息

要删除这些更改,请运行 VPModule.msi 文件并选择“删除”选项。或者,使用“控制面板”中的添加/删除程序

无人参与的信息

使用以下命令可在无人参与的模式下安装这些更改:
msiexec /i vpmodule.msi /qb-
使用以下命令可在无人参与的模式下删除这些更改:
msiexec /x vpmodule.msi /qb-

自定义安装信息

要手动安装 HTTP 模块,请按照下列步骤操作:
  1. 备份您的 Machine.config 文件。有关如何执行此操作的更多信息,请参见“先决条件”一节。
  2. 下载程序包。有关如何执行此操作的更多信息,请参见“下载信息”一节。
  3. 使用以下命令可将 Microsoft.Web.ValidatePathModule.dll 文件从 VPModule.msi 文件提取到您选择的位置:
    msiexec /a vpmodule.msi
  4. 使用以下命令可将模块复制到 GAC 中:
    gacutil -i microsoft.web.validatepathmodule.dll
    注意:该模块会被提取到“Microsoft ValidatePath Module”文件夹中,它位于您指定的位置下。
  5. 编辑 Machine.config 文件,以将以下项添加到 <httpModules> 部分:
    <add name="ValidatePathModule" type="Microsoft.Web.ValidatePathModule, Microsoft.Web.ValidatePathModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eba19824f86fdadd"/>
    

已知问题

已知问题如下:
  • 安装程序确保已使用 Microsoft.Web.ValidatePathModule.dll 文件的 <httpModule> 项成功更新了 Machine.config 文件。但是在某些情况下,这可能无法阻止出现本文所描述的问题。

    如果存在 Web.config 文件,则可能出现此问题;因为 Web.config 文件会清除在 Machine.config 级别上定义的列表。例如,Web.config 文件中类似于以下内容的项可能会导致此问题:
    <httpModules>
        <clear/>
    </httpModules>
    
    该配置将阻止缓解模块在这一特定应用程序中执行操作。通常,如果应用程序不想使用在 Machine.config 级别上定义的 HTTP 模块,而是想清除列表并定义特定于当前应用程序的新列表,则会出现此配置。
  • 如果您安装了不同版本的 .NET Framework,则必须卸载并重新安装 VPModule.msi 文件。
  • 有关 SQL Server Reporting Services 和 VPModule.msi 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    887787 安装 ASP.NET ValidatePath 模块后 Reporting Services 中可能出现错误信息

参考

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
887405 如何使用 Windows Installer 和组策略在 Active Directory 域中部署 VPModule.msi
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
887404 如何使用 Systems Management Server 2003 部署 ValidatePath 模块
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
887290 如何使用 ASP.NET ValidatePath 模块扫描工具 (VPModuleScanner.js)
有关会话状态的更多信息,请访问下面的 Microsoft Web 站点:
http://msdn2.microsoft.com/en-us/library/87069683(vs.71).aspx

属性

文章编号: 887289 - 最后修改: 2007年12月3日 - 修订: 3.8
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 1
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
关键字:?
kbsecurity kbtshoot KB887289
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com