<p>Web 服务器经常是各种安全攻击的对象。有些攻击非常严重,企业资产、生产力和客户关系常因此损失惨重。事实上,所有的攻击都给人们带来了诸多不便与困挠,确保 Web 服务器的安全是企业成功的关键。URLScan 是一个 ISAPI 筛选器,它使 Web 站点管理员能够限制服务器将要处理的 HTTP 请求的类型,通过阻止特定的 HTTP 请求,URLScan 筛选器可以阻止可能有害的请求到达服务器并造成损害。</p><p>URLScan下载:<a href="https://samool.com/attachments/date_200907/675e706fcd273718d8abbb6275749c6d.rar">urlscan.rar</a></p><h3 id="tocHeadRef">修改 URLScan.ini 文件</h3><p><script type="text/javascript"></script>URLScan 的所有配置都是通过 URLScan.ini 文件执行的,此文件位于 %WINDIR%\System32\Inetsrv\URLscan 文件夹中。要配置 URLScan,请在文本编辑器(如记事本)中打开此文件,进行相应的更改,然后保存此文件。<br /><br /><b>注意</b>:要使更改生效,必须重新启动 Internet 信息服务 (IIS)。一种快速的实现方法是在命令提示符处运行 <b>IISRESET</b>。 <br /><br />URLScan.ini 文件包含以下几节:</p><ul jquery1248932103296="115"><li><b>[Options]</b>:此节描述常规 URLScan 选项。</li><li><b>[AllowVerbs] 和 [DenyVerbs]</b>:此节定义 URLScan 允许的谓词(又称作 HTTP 方法)。</li><li><b>[DenyHeaders]</b>:此节列出 HTTP 请求中不允许的 HTTP 标头。如果 HTTP 请求中包含此节中列出的 HTTP 标头之一,URLScan 将拒绝该请求。</li><li><b>[AllowExtensions] 和 [DenyExtensions]</b>:此节定义 URLScan 允许的文件扩展名。</li><li><b>[DenyURLSequences]</b>:此节列出 HTTP 请求中不允许的字符串。URLScan 拒绝那些包含此节中出现的字符串的 HTTP 请求。</li></ul><p>本文将更详细地介绍每一节。<br /><br /></p><h4 id="tocHeadRef">[Options] 节</h4><p><script type="text/javascript"></script>在 <b>[Options]</b> 节中,可以配置许多 URLScan 选项。此节中的每一行都具有以下格式:</p><div class="indent" jquery1248932103296="30"><var>OptionName</var>=<var>OptionValue</var></div><p>可用选项及其默认值如下所示:</p><ul><li><b>UseAllowVerbs=1</b><br /><br />默认情况下,此选项设置为 1。如果将此选项设置为 1,则 URLScan 仅允许那些使用 <b>[AllowVerbs]</b> 节中列出的谓词的 HTTP 请求。URLScan 禁止任何不使用这些谓词的请求。如果将此选项设置为 0,则 URLScan 忽略 <b>[AllowVerbs]</b> 节,相反仅禁止那些使用 <b>[DenyVerbs]</b> 节中列出的谓词的请求。</li><li><b>UseAllowExtensions=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 0,则 URLScan 禁止对 <b>[DenyExtensions]</b> 节中列出的文件扩展名的请求,但允许对任何其他文件扩展名的请求。如果将此选项设置为 1,则 URLScan 仅允许对带 <b>[AllowExtensions]</b> 节中列出的扩展名的文件的请求,而禁止对任何其他文件的请求。</li><li><b>NormalizeUrlBeforeScan=1</b><br /><br />IIS 收到用 URL 编码的请求。这表示某些字符可能被替换为百分号 (%) 后跟特定的数字。例如,%20 对应于一个空格,因此,对 http://myserver/My%20Dir/My%20File.htm 的请求与对 http://myserver/My Dir/My File.htm 的请求是相同的。标准化就是对 URL 编码请求进行解码的过程。默认情况下,此选项设置为 1。如果将 <b>NormalizeUrlBeforeScan</b> 选项设置为 1,则 URLScan 分析已解码的请求。如果将此选项设置为 0,则 URLScan 分析未解码的请求。将此选项设置为 0 会影响 URLScan 禁止某种攻击的能力。</li><li><b>VerifyNormalization=1</b><br /><br />由于百分号 (%) 本身可以是 URL 编码的,所以攻击者可以向服务器提交一个精心制作的、基本上是双重编码的请求。如果发生这种情况,IIS 可能会接受本应视作无效而拒绝的请求。默认情况下,此选项设置为 1。如果将 <b>VerifyNormalization</b> 选项设置为 1,则 URLScan 将对 URL 执行两次标准化。如果第一次标准化后的 URL 与第二次标准化后的 URL 不同,URLScan 将拒绝该请求。这样就可以防止那些依赖双重编码请求的攻击。</li><li><b>AllowHighBitCharacters=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 0,则 URLScan 拒绝任何包含非 ASCII 字符的请求。这样可以防止某些类型的攻击,但同时可能也会禁止对某些合法文件的请求,如带有非英文名的文件。</li><li><b>AllowDotInPath=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 0,则 URLScan 拒绝所有包含多个句点 (.) 的请求。这样可以防止通过将安全的文件扩展名放入 URL 的路径信息或查询字符串部分,以达到伪装请求中的危险文件扩展名的企图。例如,如果将此选项设置为 1,则 URLScan 可能允许对 http://servername/BadFile.exe/SafeFile.htm 的请求,因为它认为这是对 HTML 页的请求,但实际上这是一个对可执行 (.exe) 文件的请求,而该文件的名称在 PATH_INFO 区域中显示为 HTML 页的名称。如果将此选项设置为 0,URLScan 可能还会拒绝对包含句点的目录的请求。</li><li><b>RemoveServerHeader=0</b><br /><br />默认情况下,Web 服务器返回一个标头,其中指出了 Web 服务器在所有响应中运行的 Web 服务器软件。这会增加服务器遭受攻击的可能性,因为攻击者可以确定服务器正在运行 IIS,于是便攻击已知的 IIS 问题,而不是试图使用为其他 Web 服务器设计的攻击手段来攻击 IIS 服务器。默认情况下,此选项设置为 0。如果将 <b>RemoveServerHeader</b> 选项设置为 1,可以防止您的服务器发送将其标识为 IIS 服务器的标头。如果将 <b>RemoveServerHeader</b> 设置为 0,则仍发送此标头。</li><li><b>AlternateServerName=(默认情况下不指定)</b><br /><br />如果将 <b>RemoveServerHeader</b> 设置为 0,可以在 <b>AlternateServerName</b> 选项中指定一个字符串以指定将在服务器标头中传回的内容。如果将 <b>RemoveServerHeader</b> 设置为 1,则此选项将被忽略。</li><li><b>EnableLogging=1</b><br /><br />默认情况下,URLScan 在 %WINDIR%\System32\Inetsrv\URLScan 中保留所有被禁止的请求的完整日志。如果不希望保留此日志,可将 <b>EnableLogging</b> 设置为 0。</li><li><b>PerProcessLogging=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 1,URLScan 将为承载 URLScan.dll 的每个进程创建一个单独的日志。如果将此选项设置为 0,所有进程将记录到同一个文件中。</li><li><b>PerDayLogging=1</b><br /><br />默认情况下,此选项设置为 1。如果将该值设置为 1,则 URLScan 每天创建一个新的日志文件。每个日志文件的名称都是 Urlscan.<var>MMDDYY</var>.log,其中 <var>MMDDYY</var> 是日志文件的日期。如果将该值设置为 0,则所有日志记录都保存在同一个文件中,与日期无关。</li><li><b>AllowLateScanning=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 0,则 URLScan 作为高优先级筛选器运行,这表示它先于服务器上安装的所有其他 Internet 服务器应用程序编程接口 (ISAPI) 筛选器执行。如果将此选项设置为 1,则 URLScan 作为低优先级筛选器运行,以便其他筛选器可以在 URLScan 进行任何分析之前修改 URL。FrontPage Server Extensions (FPSE) 要求将此选项设置为 1。</li><li><b>RejectResponseUrl=(默认情况下不指定)</b><br /><br />此选项指定在 URLScan 禁止请求时运行的文件的虚拟路径。这允许您自定义针对被禁止的请求发送给客户机的响应。必须将 <b>RejectResponseUrl</b> 指定为相应文件的虚拟路径,如 /Path/To/RejectResponseHandler.asp。可以指定 URLScan 通常禁止的文件,如 Active Server Pages (ASP) 页。还可以从该页指定以下服务器变量: <ul><li><b>HTTP_URLSCAN_STATUS_HEADER</b>:此变量指定请求被禁止的原因。</li><li><b>HTTP_URLSCAN_ORIGINAL_VERB</b>:此变量指定被禁止的请求中的原始谓词(例如 GET、POST、HEAD 或 DEBUG)。</li><li><b>HTTP_URLSCAN_ORIGINAL_URL</b>:此变量指定被禁止的请求中的原始 URL。</li></ul>如果将 <b>RejectResponseUrl</b> 设置为特殊值 <b>/~*</b>,则 URLScan 使用“仅日志记录”模式。这允许 IIS 为所有请求提供服务,但它会在 URLScan 日志中为所有通常被禁止的请求添加相应的项。这在需要测试 URLScan.ini 文件时很有用。<br /><br />如果没有指定 <b>RejectResponseUrl</b> 的值,则 URLScan 使用默认值 <b>/<Rejected-By-UrlScan></b>。<br /><br /></li><li><b>UseFastPathReject=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 1,则 URLScan 忽略 <b>RejectResponseUrl</b> 设置并立即向浏览器返回 404 错误信息。这比处理 <b>RejectResponseUrl</b> 要快,但它允许的日志记录选项没有那么多。如果将此选项设置为 0,则 URLScan 使用 <b>RejectResponseUrl</b> 设置来处理请求。</li></ul><h4 id="tocHeadRef">[AllowVerbs] 节和 [DenyVerbs] 节</h4><p><script type="text/javascript"></script><b>[AllowVerbs]</b> 节和 <b>[DenyVerbs]</b> 节定义 URLScan 允许的 HTTP 谓词(又称作方法)。常用的 HTTP 谓词包括 GET、POST、HEAD 和 PUT。其他应用程序(如 FPSE 和 Web 分布式创作和版本控制 (WebDAV))使用更多的谓词。<br /><br /><b>[AllowVerbs]</b> 节和 <b>[DenyVerbs]</b> 节的语法相同。它们由 HTTP 谓词列表组成,每个谓词占一行。<br /><br />URLScan 根据 <b>[Options]</b> 节中 <b>UseAllowVerbs</b> 选项的值来决定使用哪一节。默认情况下,此选项设置为 1。如果将 <b>UseAllowVerbs</b> 设置为 1,则 URLScan 仅允许那些使用 <b>[AllowVerbs]</b> 节中列出的谓词的请求。不使用任何这些谓词的请求将被拒绝。在这种情况下,<b>[DenyVerbs]</b> 节被忽略。<br /><br />如果将 <b>UseAllowVerbs</b> 设置为 0,则 URLScan 拒绝那些使用 <b>[DenyVerbs]</b> 节中明确列出的谓词的请求。允许任何使用未在此节中出现的谓词的请求。在这种情况下,URLScan 忽略 <b>[AllowVerbs]</b> 节。<br /><br /></p><h4 id="tocHeadRef">[DenyHeaders] 节</h4><p><script type="text/javascript"></script>当客户机向 Web 服务器请求页面时,它通常会发送一些包含有关此请求的其他信息的 HTTP 标头。常见的 HTTP 标头包括:</p><ul><li><b>Host:</b><br /><br />此标头包含 Web 服务器的名称。</li><li><b>Accept:</b><br /><br />此标头定义客户机可以处理的文件类型。</li><li><b>User-Agent:</b><br /><br />此标头包含请求页面的浏览器的名称。</li><li><b>Authorization:</b><br /><br />此标头定义客户机支持的身份验证方法。</li></ul><p>客户机可能会向服务器发送其他标头以指定其他信息。<br /><br />在 <b>[DenyHeaders]</b> 节中,您定义 URLScan 将拒绝的 HTTP 标头。如果 URLScan 收到的请求中包含此节中列出的任何标头,它将拒绝该请求。此节由 HTTP 标头列表组成,每个标头占一行。标头名后面必须跟一个冒号 (:)(例如 <b>Header-Name:</b>)。<br /><br /></p><h4 id="tocHeadRef">[AllowExtensions] 节和 [DenyExtensions] 节</h4><p><script type="text/javascript"></script>大多数文件都有一个标识其文件类型的文件扩展名。例如,Word 文档的文件名一般以 .doc 结束,HTML 文件名一般以 .htm 或 .html 结束,纯文本文件名一般以 .txt 结束。<b>[AllowExtensions]</b> 节和 <b>[DenyExtensions]</b> 节允许您定义 URLScan 将禁止的扩展名。例如,您可以配置 URLScan 以拒绝对 .exe 文件的请求,防止 Web 用户在您的系统上执行应用程序。<br /><br /><b>[AllowExtensions]</b> 节和 <b>[DenyExtensions]</b> 节的语法相同。它们由文件扩展名列表组成,每个扩展名占一行。扩展名以句点 (.) 开头(例如 .ext)。<br /><br />URLScan 根据 <b>[Options]</b> 节中 <b>UseAllowExtensions</b> 的值来决定使用哪一节。默认情况下,此选项设置为 0。如果将 <b>UseAllowExtensions</b> 设置为 0,则 URLScan 仅拒绝对 <b>[DenyExtensions]</b> 节中列出的文件扩展名的请求。允许此节中未列出的任何文件扩展名。<b>[AllowExtensions]</b> 节被忽略。<br /><br />如果将 <b>UseAllowExtensions</b> 设置为 1,则 URLScan 拒绝对 <b>[AllowExtensions]</b> 节中未明确列出的任何文件扩展名的请求。仅允许对此节中列出的文件扩展名的请求。<b>[DenyExtensions]</b> 节被忽略。<br /><br />有关如何配置 URLScan 以允许对没有扩展名的文件的请求的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:</p><div class="indent" jquery1248932103296="31"><a class="KBlink" href="http://support.microsoft.com/kb/312376/" jquery1248932103296="77">312376</a> <span class="pLink">(http://support.microsoft.com/kb/312376/ ) </span>如何配置 URLScan 以在 IIS 中允许使用空扩展名的请求</div><h4 id="tocHeadRef">[DenyUrlSequences] 节</h4><p><script type="text/javascript"></script>可以配置 URLScan 以禁止那些 URL 中包含某些字符序列的请求。例如,可以禁止那些包含两个连续句点 (..) 的请求,利用目录遍历漏洞的攻击中经常采用这种手段。要指定一个想要禁止的字符序列,请将此序列单独放在 <b>[DenyUrlSequences]</b> 节中的一行上。<br /><br />请注意,添加字符序列可能会对 Microsoft Exchange 的 Outlook Web Access (OWA) 产生负面影响。当您从 OWA 打开一个邮件时,该邮件的主题行包含在服务器所请求的 URL 中。由于 URLScan.ini 文件禁止任何包含百分号 (%) 和连字符 (&) 的请求,因此,当用户尝试打开主题行为“Sales increase by 100%”或“Bob & Sue are coming to town”的邮件时,会收到 404 错误信息。要解决此问题,可以从 <b>[DenyUrlSequences]</b> 节中删除这些序列。请注意,这样做会降低安全性,因为它有可能允许危险的请求到达服务器。 </p> Loading... <p>Web 服务器经常是各种安全攻击的对象。有些攻击非常严重,企业资产、生产力和客户关系常因此损失惨重。事实上,所有的攻击都给人们带来了诸多不便与困挠,确保 Web 服务器的安全是企业成功的关键。URLScan 是一个 ISAPI 筛选器,它使 Web 站点管理员能够限制服务器将要处理的 HTTP 请求的类型,通过阻止特定的 HTTP 请求,URLScan 筛选器可以阻止可能有害的请求到达服务器并造成损害。</p><p>URLScan下载:<span class="external-link"><a class="no-external-link" href="https://samool.com/attachments/date_200907/675e706fcd273718d8abbb6275749c6d.rar" target="_blank"><i data-feather="external-link"></i>urlscan.rar</a></span></p><h3 id="tocHeadRef">修改 URLScan.ini 文件</h3><p><script type="text/javascript"></script>URLScan 的所有配置都是通过 URLScan.ini 文件执行的,此文件位于 %WINDIR%\System32\Inetsrv\URLscan 文件夹中。要配置 URLScan,请在文本编辑器(如记事本)中打开此文件,进行相应的更改,然后保存此文件。<br /><br /><b>注意</b>:要使更改生效,必须重新启动 Internet 信息服务 (IIS)。一种快速的实现方法是在命令提示符处运行 <b>IISRESET</b>。 <br /><br />URLScan.ini 文件包含以下几节:</p><ul jquery1248932103296="115"><li><b>[Options]</b>:此节描述常规 URLScan 选项。</li><li><b>[AllowVerbs] 和 [DenyVerbs]</b>:此节定义 URLScan 允许的谓词(又称作 HTTP 方法)。</li><li><b>[DenyHeaders]</b>:此节列出 HTTP 请求中不允许的 HTTP 标头。如果 HTTP 请求中包含此节中列出的 HTTP 标头之一,URLScan 将拒绝该请求。</li><li><b>[AllowExtensions] 和 [DenyExtensions]</b>:此节定义 URLScan 允许的文件扩展名。</li><li><b>[DenyURLSequences]</b>:此节列出 HTTP 请求中不允许的字符串。URLScan 拒绝那些包含此节中出现的字符串的 HTTP 请求。</li></ul><p>本文将更详细地介绍每一节。<br /><br /></p><h4 id="tocHeadRef">[Options] 节</h4><p><script type="text/javascript"></script>在 <b>[Options]</b> 节中,可以配置许多 URLScan 选项。此节中的每一行都具有以下格式:</p><div class="indent" jquery1248932103296="30"><var>OptionName</var>=<var>OptionValue</var></div><p>可用选项及其默认值如下所示:</p><ul><li><b>UseAllowVerbs=1</b><br /><br />默认情况下,此选项设置为 1。如果将此选项设置为 1,则 URLScan 仅允许那些使用 <b>[AllowVerbs]</b> 节中列出的谓词的 HTTP 请求。URLScan 禁止任何不使用这些谓词的请求。如果将此选项设置为 0,则 URLScan 忽略 <b>[AllowVerbs]</b> 节,相反仅禁止那些使用 <b>[DenyVerbs]</b> 节中列出的谓词的请求。</li><li><b>UseAllowExtensions=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 0,则 URLScan 禁止对 <b>[DenyExtensions]</b> 节中列出的文件扩展名的请求,但允许对任何其他文件扩展名的请求。如果将此选项设置为 1,则 URLScan 仅允许对带 <b>[AllowExtensions]</b> 节中列出的扩展名的文件的请求,而禁止对任何其他文件的请求。</li><li><b>NormalizeUrlBeforeScan=1</b><br /><br />IIS 收到用 URL 编码的请求。这表示某些字符可能被替换为百分号 (%) 后跟特定的数字。例如,%20 对应于一个空格,因此,对 http://myserver/My%20Dir/My%20File.htm 的请求与对 http://myserver/My Dir/My File.htm 的请求是相同的。标准化就是对 URL 编码请求进行解码的过程。默认情况下,此选项设置为 1。如果将 <b>NormalizeUrlBeforeScan</b> 选项设置为 1,则 URLScan 分析已解码的请求。如果将此选项设置为 0,则 URLScan 分析未解码的请求。将此选项设置为 0 会影响 URLScan 禁止某种攻击的能力。</li><li><b>VerifyNormalization=1</b><br /><br />由于百分号 (%) 本身可以是 URL 编码的,所以攻击者可以向服务器提交一个精心制作的、基本上是双重编码的请求。如果发生这种情况,IIS 可能会接受本应视作无效而拒绝的请求。默认情况下,此选项设置为 1。如果将 <b>VerifyNormalization</b> 选项设置为 1,则 URLScan 将对 URL 执行两次标准化。如果第一次标准化后的 URL 与第二次标准化后的 URL 不同,URLScan 将拒绝该请求。这样就可以防止那些依赖双重编码请求的攻击。</li><li><b>AllowHighBitCharacters=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 0,则 URLScan 拒绝任何包含非 ASCII 字符的请求。这样可以防止某些类型的攻击,但同时可能也会禁止对某些合法文件的请求,如带有非英文名的文件。</li><li><b>AllowDotInPath=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 0,则 URLScan 拒绝所有包含多个句点 (.) 的请求。这样可以防止通过将安全的文件扩展名放入 URL 的路径信息或查询字符串部分,以达到伪装请求中的危险文件扩展名的企图。例如,如果将此选项设置为 1,则 URLScan 可能允许对 http://servername/BadFile.exe/SafeFile.htm 的请求,因为它认为这是对 HTML 页的请求,但实际上这是一个对可执行 (.exe) 文件的请求,而该文件的名称在 PATH_INFO 区域中显示为 HTML 页的名称。如果将此选项设置为 0,URLScan 可能还会拒绝对包含句点的目录的请求。</li><li><b>RemoveServerHeader=0</b><br /><br />默认情况下,Web 服务器返回一个标头,其中指出了 Web 服务器在所有响应中运行的 Web 服务器软件。这会增加服务器遭受攻击的可能性,因为攻击者可以确定服务器正在运行 IIS,于是便攻击已知的 IIS 问题,而不是试图使用为其他 Web 服务器设计的攻击手段来攻击 IIS 服务器。默认情况下,此选项设置为 0。如果将 <b>RemoveServerHeader</b> 选项设置为 1,可以防止您的服务器发送将其标识为 IIS 服务器的标头。如果将 <b>RemoveServerHeader</b> 设置为 0,则仍发送此标头。</li><li><b>AlternateServerName=(默认情况下不指定)</b><br /><br />如果将 <b>RemoveServerHeader</b> 设置为 0,可以在 <b>AlternateServerName</b> 选项中指定一个字符串以指定将在服务器标头中传回的内容。如果将 <b>RemoveServerHeader</b> 设置为 1,则此选项将被忽略。</li><li><b>EnableLogging=1</b><br /><br />默认情况下,URLScan 在 %WINDIR%\System32\Inetsrv\URLScan 中保留所有被禁止的请求的完整日志。如果不希望保留此日志,可将 <b>EnableLogging</b> 设置为 0。</li><li><b>PerProcessLogging=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 1,URLScan 将为承载 URLScan.dll 的每个进程创建一个单独的日志。如果将此选项设置为 0,所有进程将记录到同一个文件中。</li><li><b>PerDayLogging=1</b><br /><br />默认情况下,此选项设置为 1。如果将该值设置为 1,则 URLScan 每天创建一个新的日志文件。每个日志文件的名称都是 Urlscan.<var>MMDDYY</var>.log,其中 <var>MMDDYY</var> 是日志文件的日期。如果将该值设置为 0,则所有日志记录都保存在同一个文件中,与日期无关。</li><li><b>AllowLateScanning=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 0,则 URLScan 作为高优先级筛选器运行,这表示它先于服务器上安装的所有其他 Internet 服务器应用程序编程接口 (ISAPI) 筛选器执行。如果将此选项设置为 1,则 URLScan 作为低优先级筛选器运行,以便其他筛选器可以在 URLScan 进行任何分析之前修改 URL。FrontPage Server Extensions (FPSE) 要求将此选项设置为 1。</li><li><b>RejectResponseUrl=(默认情况下不指定)</b><br /><br />此选项指定在 URLScan 禁止请求时运行的文件的虚拟路径。这允许您自定义针对被禁止的请求发送给客户机的响应。必须将 <b>RejectResponseUrl</b> 指定为相应文件的虚拟路径,如 /Path/To/RejectResponseHandler.asp。可以指定 URLScan 通常禁止的文件,如 Active Server Pages (ASP) 页。还可以从该页指定以下服务器变量: <ul><li><b>HTTP_URLSCAN_STATUS_HEADER</b>:此变量指定请求被禁止的原因。</li><li><b>HTTP_URLSCAN_ORIGINAL_VERB</b>:此变量指定被禁止的请求中的原始谓词(例如 GET、POST、HEAD 或 DEBUG)。</li><li><b>HTTP_URLSCAN_ORIGINAL_URL</b>:此变量指定被禁止的请求中的原始 URL。</li></ul>如果将 <b>RejectResponseUrl</b> 设置为特殊值 <b>/~*</b>,则 URLScan 使用“仅日志记录”模式。这允许 IIS 为所有请求提供服务,但它会在 URLScan 日志中为所有通常被禁止的请求添加相应的项。这在需要测试 URLScan.ini 文件时很有用。<br /><br />如果没有指定 <b>RejectResponseUrl</b> 的值,则 URLScan 使用默认值 <b>/<Rejected-By-UrlScan></b>。<br /><br /></li><li><b>UseFastPathReject=0</b><br /><br />默认情况下,此选项设置为 0。如果将此选项设置为 1,则 URLScan 忽略 <b>RejectResponseUrl</b> 设置并立即向浏览器返回 404 错误信息。这比处理 <b>RejectResponseUrl</b> 要快,但它允许的日志记录选项没有那么多。如果将此选项设置为 0,则 URLScan 使用 <b>RejectResponseUrl</b> 设置来处理请求。</li></ul><h4 id="tocHeadRef">[AllowVerbs] 节和 [DenyVerbs] 节</h4><p><script type="text/javascript"></script><b>[AllowVerbs]</b> 节和 <b>[DenyVerbs]</b> 节定义 URLScan 允许的 HTTP 谓词(又称作方法)。常用的 HTTP 谓词包括 GET、POST、HEAD 和 PUT。其他应用程序(如 FPSE 和 Web 分布式创作和版本控制 (WebDAV))使用更多的谓词。<br /><br /><b>[AllowVerbs]</b> 节和 <b>[DenyVerbs]</b> 节的语法相同。它们由 HTTP 谓词列表组成,每个谓词占一行。<br /><br />URLScan 根据 <b>[Options]</b> 节中 <b>UseAllowVerbs</b> 选项的值来决定使用哪一节。默认情况下,此选项设置为 1。如果将 <b>UseAllowVerbs</b> 设置为 1,则 URLScan 仅允许那些使用 <b>[AllowVerbs]</b> 节中列出的谓词的请求。不使用任何这些谓词的请求将被拒绝。在这种情况下,<b>[DenyVerbs]</b> 节被忽略。<br /><br />如果将 <b>UseAllowVerbs</b> 设置为 0,则 URLScan 拒绝那些使用 <b>[DenyVerbs]</b> 节中明确列出的谓词的请求。允许任何使用未在此节中出现的谓词的请求。在这种情况下,URLScan 忽略 <b>[AllowVerbs]</b> 节。<br /><br /></p><h4 id="tocHeadRef">[DenyHeaders] 节</h4><p><script type="text/javascript"></script>当客户机向 Web 服务器请求页面时,它通常会发送一些包含有关此请求的其他信息的 HTTP 标头。常见的 HTTP 标头包括:</p><ul><li><b>Host:</b><br /><br />此标头包含 Web 服务器的名称。</li><li><b>Accept:</b><br /><br />此标头定义客户机可以处理的文件类型。</li><li><b>User-Agent:</b><br /><br />此标头包含请求页面的浏览器的名称。</li><li><b>Authorization:</b><br /><br />此标头定义客户机支持的身份验证方法。</li></ul><p>客户机可能会向服务器发送其他标头以指定其他信息。<br /><br />在 <b>[DenyHeaders]</b> 节中,您定义 URLScan 将拒绝的 HTTP 标头。如果 URLScan 收到的请求中包含此节中列出的任何标头,它将拒绝该请求。此节由 HTTP 标头列表组成,每个标头占一行。标头名后面必须跟一个冒号 (:)(例如 <b>Header-Name:</b>)。<br /><br /></p><h4 id="tocHeadRef">[AllowExtensions] 节和 [DenyExtensions] 节</h4><p><script type="text/javascript"></script>大多数文件都有一个标识其文件类型的文件扩展名。例如,Word 文档的文件名一般以 .doc 结束,HTML 文件名一般以 .htm 或 .html 结束,纯文本文件名一般以 .txt 结束。<b>[AllowExtensions]</b> 节和 <b>[DenyExtensions]</b> 节允许您定义 URLScan 将禁止的扩展名。例如,您可以配置 URLScan 以拒绝对 .exe 文件的请求,防止 Web 用户在您的系统上执行应用程序。<br /><br /><b>[AllowExtensions]</b> 节和 <b>[DenyExtensions]</b> 节的语法相同。它们由文件扩展名列表组成,每个扩展名占一行。扩展名以句点 (.) 开头(例如 .ext)。<br /><br />URLScan 根据 <b>[Options]</b> 节中 <b>UseAllowExtensions</b> 的值来决定使用哪一节。默认情况下,此选项设置为 0。如果将 <b>UseAllowExtensions</b> 设置为 0,则 URLScan 仅拒绝对 <b>[DenyExtensions]</b> 节中列出的文件扩展名的请求。允许此节中未列出的任何文件扩展名。<b>[AllowExtensions]</b> 节被忽略。<br /><br />如果将 <b>UseAllowExtensions</b> 设置为 1,则 URLScan 拒绝对 <b>[AllowExtensions]</b> 节中未明确列出的任何文件扩展名的请求。仅允许对此节中列出的文件扩展名的请求。<b>[DenyExtensions]</b> 节被忽略。<br /><br />有关如何配置 URLScan 以允许对没有扩展名的文件的请求的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:</p><div class="indent" jquery1248932103296="31"><a class="KBlink" href="http://support.microsoft.com/kb/312376/" jquery1248932103296="77">312376</a> <span class="pLink">(http://support.microsoft.com/kb/312376/ ) </span>如何配置 URLScan 以在 IIS 中允许使用空扩展名的请求</div><h4 id="tocHeadRef">[DenyUrlSequences] 节</h4><p><script type="text/javascript"></script>可以配置 URLScan 以禁止那些 URL 中包含某些字符序列的请求。例如,可以禁止那些包含两个连续句点 (..) 的请求,利用目录遍历漏洞的攻击中经常采用这种手段。要指定一个想要禁止的字符序列,请将此序列单独放在 <b>[DenyUrlSequences]</b> 节中的一行上。<br /><br />请注意,添加字符序列可能会对 Microsoft Exchange 的 Outlook Web Access (OWA) 产生负面影响。当您从 OWA 打开一个邮件时,该邮件的主题行包含在服务器所请求的 URL 中。由于 URLScan.ini 文件禁止任何包含百分号 (%) 和连字符 (&) 的请求,因此,当用户尝试打开主题行为“Sales increase by 100%”或“Bob & Sue are coming to town”的邮件时,会收到 404 错误信息。要解决此问题,可以从 <b>[DenyUrlSequences]</b> 节中删除这些序列。请注意,这样做会降低安全性,因为它有可能允许危险的请求到达服务器。 </p> 最后修改:2009 年 08 月 16 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 支持就是力量