修复FrontPage服务器扩展对IIS的意外影响
Article last modified on 2002-9-11
The information in this article applies to:
ü Microsoft IIS 5.0
ü Microsoft FrontPage
ü Microsoft Outlook Web Access
ü Microsoft Exchange 2000
问题陈述:
如果将服务器的默认站点的服务器扩展删除(默认Web站点à属性à所有任务à删除服务器扩展),则在Web Mail中察看邮件附件时,不会再弹出“输入网络密码”对话框。
详情参看:
http://www.csdn.net/develop/read_article.asp?id=15009
和http://www.csdn.net/develop/read_article.asp?id=15010
Cause:
【具体流程】:
下面我们结合网络监视器捕获的包,对比使用服务器扩展和删除服务器扩展两种情况的不同之处。
蓝色的字体代表捕获的包体,这里只是部分包内容。
红色的字体代表需要重视的包内容。
绿色的字体代表我的注释。
简称使用服务器扩展的情况为FSE,删除服务器扩展情况称为Non-FSE。
FSE和Non-FSE都会在得到所有的附件数据之后,由客户端的Explorer发送给服务器一个OPTIONS /HTTP/1.1的请求。
但是,接下来,POST请求是不一样的:
FSE将发送POST请求给/_vti_bin/shtml.dll/_vti_rpc,POST的数据是下面的这个method=url+to+web+url%3a4%2e0%2e2%2e4715….:
method=url+to+web+url%3a4%2e0%2e2%2e4715&url=%2fum%2fisapi%2fComBox%2edll%2f%e8%bf%81%e7%a7%bb%e6%96%b9%e6%a1%88%2edoc&flags=0
Non-FSE将发送POST请求给/_vti_bin/shtml.exe/_vti_rpc,POST的数据是method=server+version%3a4%2e0%2e2%2e4715。
Shtml.dll默认位于C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\_vti_bin。它的NTFS权限配置为:
Administrators 完全控制
INTERACTIVE 读取及运行
NETWORK 读取及运行
Power Users 读取及运行
SYSTEM 完全控制
UMServer\Users 读取及运行。
也就是说,shtml.dll的权限很松的。
Shtml.exe默认位于C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\isapi。它的NTFS权限配置为:
Administrators 完全控制
Power Users 读取及运行
SYSTEM 完全控制
UMServer\Users 读取及运行。
Shtml.exe的权限就稍微紧了点。
服务器端返回的也不一样:
FSE,将得到一个title为“vermeer RPC packet”的HTML内容;
而Non-FSE,将得到这样一个网页:
HTTP/1.1 405 Method not allowed
Server: Microsoft-IIS/5.0
Date: Wed, 11 Sep 2002 04:50:39 GMT
Connection: close
Allow: OPTIONS, TRACE, GET, HEAD, PUT, DELETE, POST
Content-Length: 2859
Content-Type: text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=ltr>
<head>
<style> a:link {font:9pt/11pt 宋体; color:FF0000} a:visited {font:9pt/11pt 宋体; color:#4e4e4e}
</style>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<title>网页无法显示</title>…………..
这就是说,HTTP 405 ,资源被禁止。全是因为我们没有权限访问shtml.exe。
Non-FSE接收到了这种HTTP405信息后,客户端直接再次发送OPTIONS请求:
OPTIONS /xx/xxxxx/xxxxxx.dll/xxxx.doc?ClassName=xx_xxxxxxxxxx.xxxxxx&UserID=9xxxxxxx-E21D-41E3-893B-4E9B7EBCEAcc&Validate=YES&URL=http://xxxxxSERVER/exchange/zhengyun/%E6%94%B6%E4%BB%B6%E7%AE%xx/%xx%xx%xx%xx%xx%xx%xx%96%B9%E6%A1%88.EML/xxxxx.doc HTTP/1.1
服务器端就返回HTTP 200,于是附件内容就显示出来了。
FSE情况下,因为能够以匿名身份访问shtml.dll,所以还会继续下去,去和author.dll打交道。
Writen by zhengyun@tomosoft.com
本文档所包含的信息代表了在发布之日,ZhengYun 对所讨论问题的当前看法,Zhengyun 不保证所给信息在发布之日以后的准确性。
本文档仅供参考。对本文档中的信息,Zhengyun 不做任何明示或默示的保证。