首页 服务 产品 文档 关于

IIS短文件名漏洞修复办法

修改注册列表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation的值为1

在Windows中禁用8.3格式的文件名

在很久之前,大概是Win3.x的时候,Windows中的文件名是由不超过8个字符的主文件名,和不超过3个字符的扩展名组成。到了Windows 95的时候,这个长度被扩展成主文件名+扩展名不超过255个字符。为了保证兼容性,Windows提供了一种转换的方式,大意是用’~’和数字还缩短文件名的长度,比如”C:\Program Files”被转换成了”C:\Progra`1″。这种转换使得一些老的应用程序在新的Windows平台上也可以使用,但它多多少少降低了系统的性能(文件索引之类)。

想知道自己的系统有没有开启这个功能,可以通过以下命令查询:

1
fsutil 8dot3name query c:
“c:”表示查询C盘的状态。如果功能被启用,会显示类似如下的信息:

Disable8dot3 的卷状态为 0 (8dot3 名称创建已启用)。
NtfsDisable8dot3NameCreation 的注册表状态为默认值 2 (卷级别设置)。
基于以上的两个设置,在 c: 上启用 8dot3 名称创建。
如果在C盘上关闭这个功能,则可使用以下命令:

1
fsutil 8dot3name set C: 1
1表示禁用,0表示启用。如果不写盘符,则是全局设置,这时可选的有4个值:0(全部启动),1(全部禁用),2(每个盘符单独设置),3(除系统盘外全部禁用)。全局设置也可以通过注册实现:

键:HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
值:NTFSDisable8dot3NameCreation  类型:REG_DWORD

可选的值就是上述的4个之一,在Windows 7(或者Windows Server 2008 R2)中的默认值是2。


======================================

一、针对IIS6

     就单纯的解决这个问题来说,微软的URLScan工具是最适合的一个轻量级工具,关键它是免费的,而且安装、配置非常简单。可以从这里下载:http://down.tech.sina.com.cn/page/41877.html。

    安装过程就不说了,傻瓜式的。

    安装完毕之后,在需要做URL过滤的站点的属性中,添加一个ISAPI筛选器,dll路径位 于:C:WINDOWSsystem32inetsrvurlscan。该目录下还有一个配置文件:UrlScan.ini,微软的这篇文章里讲的比较详 细了:http://support.microsoft.com/kb/326444/zh-cn。

    对于“~”字符的过滤就非常简单了,在  [DenyUrlSequences]  节中加一个 ~ 就行了。


二、针对IIS7

      IIS7中已经内置了该功能。(IIS-》请求筛选-》URL-》添加拒绝序列-》URL序列设置为【~】)。

      重启IIS,搞定。