一、iis7请求筛选的功能
请求筛选的作用在于:如果要限制 Web 服务器处理的 HTTP 请求的类型,可以将 IIS 7 配置为分析每个传入请求的特定条件。
请求筛选是一种安全功能,利用该功能,Internet 服务提供商 (ISP) 和应用服务提供商可以限制协议和内容行为。也就是说,通过请求筛选,可以允许或阻止访问某些文件。
二、请求筛选的配置
筛选 HTTP 请求
可以通过以下方法执行此过程:在命令行窗口中运行 Appcmd.exe 命令、直接编辑配置文件或编写 WMI 脚本。
以下各节介绍如何通过使用 Appcmd.exe 来配置请求筛选。
若要配置高位字符,请使用以下语法:
appcmd set config /section:requestfiltering /allowhighbitcharacters:true | false
例如,若要允许使用高位字符,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /allowhighbitcharacters:true
若要配置双转义,请使用以下语法:
appcmd set config /section:requestfiltering /allowdoubleescaping:true | false
例如,若要启用双转义,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /allowdoubleescaping:true
配置文件扩展名
若要配置 IIS 处理未列出的文件扩展名的方式,请使用以下语法:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:true | false
例如,若要拒绝未列出的文件扩展名,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:false
若要配置是否应对 WebDAV 请求应用文件扩展名,请使用以下语法:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:true | false
例如,若要配置 IIS 以便不对 WebDAV 请求应用文件扩展名,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:false
若要添加新文件扩展名,请使用以下语法:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension=' .string ',allowed='true | false']
变量 fileextension string 为您要允许或拒绝的文件扩展名。
例如,若要为文件扩展名 .xxx 添加允许规则,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /+fileExtensions.[fileextension=' .xxx ',allowed='true']
若要删除文件扩展名 .xxx 的规则,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /-fileExtensions.[fileextension=' .xxx ']
配置请求限制
若要配置内容所允许的最大长度值,请使用以下语法:
appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength: unit
变量 requestlimits.maxallowedcontentlengthunit 用于指定内容的最大长度。
例如,若要将内容的最大长度指定为 30000000,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:30000000
若要配置传入 URL 所允许的最大长度值,请使用以下语法:
appcmd set config /section:requestfiltering /requestlimits.maxurl: unit
变量 requestlimits.maxurlunit 用于指定传入 URL 的最大长度。
例如,若要将传入 URL 的最大长度指定为 4096,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /requestlimits.maxurl:4096
若要配置传入查询字符串所允许的最大长度值,请使用以下语法:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring: unit
变量 requestlimits.maxquertystringunit 用于指定传入查询字符串的最大长度。
例如,若要将传入查询字符串的最大长度指定为 2048,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /requestlimits.maxquerystring:2048
若要配置特定 HTTP 头的大小限制,请使用以下语法:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header=' string ',sizelimit=' unit ']
变量 header string 用于指定适用此限制的头。 变量 sizelimitunit 用于指定此头的最大大小。
例如,若要将包含值 contoso.com 的头的最大大小指定为 2048,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='contoso.com',sizelimit='2048']
配置谓词
若要配置 IIS 处理未列出的谓词的方式,请使用以下语法:
appcmd set config /section:requestfiltering /verbs.allowunlisted:true | false
例如,若要拒绝未列出的谓词,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /verbs.allowunlisted:false
若要配置是否应向 WebDAV 请求应用谓词筛选,请使用以下语法:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:true | false
例如,若要配置 IIS 以便不向 WebDAV 请求应用谓词筛选,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /verbs.applyToWebDAV:false
若要配置要筛选的谓词,请使用以下语法:
appcmd set config /section:requestfiltering /+verbs.[verb=' string ',allowed='true | false']
变量 verbstring 用于指定适用此限制的谓词。
例如,若要指定允许使用 GET,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /+verbs.[verb='GET',allowed='true']
配置隐藏段
若要配置是否应向 WebDAV 请求应用隐藏段,请使用以下语法:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:true | false
例如,若要配置 IIS 以便不向 WebDAV 请求应用隐藏段,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:false
若要配置隐藏段,请使用以下语法:
appcmd set config /section:requestfiltering /+hiddensegments.[segment=' string ']
变量 segmentstring 用于指定隐藏的 URL 段。
例如,若要指定 /bin 为隐藏段,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /+hiddensegments.[segment='/bin']
配置拒绝 URL 序列
若要拒绝使用 URL 序列,请使用以下语法:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence=' string ']
变量 sequencestring 用于指定 URL 中从不允许 IIS 解析的字符序列。
例如,若要指定 IIS 从不解析包含两个句点的 URL,请在命令提示符处键入以下命令,然后按 Enter:
appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='..']