关于安全的建议:对投入使用的XML Web Services禁用HTTP-GET和HTTP-POST协议
关于安全的建议:对投入使用的XML Web Services禁用HTTP-GET和HTTP-POST协议
Microsoft Corporation
2002 年 2 月
摘要:出于安全原因,Web service 操作人员可能需要对 XML Web services 禁用 HTTP-GET 和 HTTP-POST 消息处理协议。禁用这些协议有助于防止外部 Web 站点与您的 Intranet 上的 XML Web services 进行恶意通信。
简介
由于 HTTP-GET 和 HTTP-POST
消息处理协议的固有功能,在某些条件下,恶意 Web 页可以使用它所定义的参数调用在防火墙后面运行的 XML Web service。这与某些基于
HTTP-GET 的恶意重定向问题类似。如果 XML Web service 支持使用 HTTP-GET 或 HTTP-POST 消息处理协议(对于使用
ASP.NET 创建的 XML Web services,将默认启用这些协议)进行通信,就可能会发生此类安全问题。
尽管使用 HTTP-POST 创建恶意 Web 页并不容易,但如果 XML Web services 没有使用 HTTP-GET 和 HTTP-POST 消息处理协议,还是应该在提供用 ASP.NET 创建的 XML Web services 的生产用计算机上禁用对这两个协议的支持。
图 1:常见的恶意通信事件
步骤 说明
1 位于防火墙后面的 HTTP 客户端(如 Microsoft?
Internet Explorer)浏览一个包含链接的恶意 Web 页。
2 Web 服务器向客户端返回一个包含恶意链接的 Web
页。当用户单击该链接时,即对客户端所在的 Intranet 上的 XML Web service 发出请求(用户并不知道该请求)。
3 恶意
Web 页将使用基于 Web 页提供的参数和用户凭据向 XML Web service 发出请求。
只有在下列条件下才会发生图 1 所示的情况:
XML Web service 支持使用 HTTP-GET 或 HTTP-POST 消息处理协议进行通信。(使用
HTTP-POST 的情况比较复杂,请参阅以下关于 HTTP-POST 的代码示例。)
恶意 Web 页的外部开发人员了解 XML Web
service 是否存在以及如何调用的详细信息。
客户端具有执行内部 XML Web service 的访问权限。
虽然这种情况概括的是如何使用 HTTP-GET 恶意调用 XML Web service,但同样适用于 HTTP-POST。要使用
HTTP-POST 以类似的方法执行 XML Web service,Web 页必须包含脚本,以便在用户单击某处导致消息发送回外部 Web
服务器时,将客户端重定向到 XML Web service。
下面的代码示例是一个包含恶意链接的 Web 页,该链接指向在客户端所在的 Intranet 上运行并使用 HTTP-GET 协议的 XML Web service。在此示例中,用户必须单击链接;不过,也有可能 Web 页包含执行重定向的脚本,因而不需要用户的交互操作。
<html>
<body>
<a
HREF =
"http://AnIntranetServer/401K.asmx/ChangeWithholding?PreTax=
0@PostTax=0">快速致富!</a>
</body>
</html>
同样,下面的代码示例是一个包含恶意按钮的 Web 页,该按钮能够与在客户端所在的 Intranet 上运行并使用 HTTP-POST 协议的 XML Web service 进行通信。
<form method="POST"
action="http://AnIntranetServer/401K.asmx/ChangeWithholding">
<input type="hidden" name="pretax"
value="2.5">
<input type="hidden" name="posttax"
value="3.5">
<input type="submit" value="快速致富。单击此处了解详细消息。"
></p>
</form>
需要说明的是,这种情况对只能通过 HTTP 协议的 SOAP 与之通信的 XML Web service 不适用。SOAP 请求需要 SOAPAction HTTP 标头,而 Web 页不具有在使用链接的重定向中包含该标头的功能。
对基于 ASP.NET 的 XML Web Services 禁用 HTTP-GET 和 HTTP-POST
协议
默认情况下,客户端可以使用以下三种协议与使用 ASP.NET 创建的 XML Web services
进行通信:HTTP-GET、HTTP-POST 和通过 HTTP 的 SOAP。使用 Microsoft .NET 框架支持的配置系统,您可以在单独的 Web
应用程序或整个计算机中修改 XML Web services 所支持的协议。
无论是在计算机上还是在单个 Web 应用程序中禁用 HTTP-GET 和 HTTP-POST,都只需修改配置文件,该文件在 .NET 框架中只是一个简单的文本文件。计算机的默认配置是在 Machine.config 文件中进行设置的,对于每个 Web 应用程序,您可以修改该 Web 应用程序的根目录中的 Web.config 文件而不是 Machine.config 文件。
在不需要 HTTP-GET 和 HTTP-POST 消息处理协议的生产用计算机上,最好在整个计算机中禁用对这些协议的支持。对于 XML Web service 客户端使用 HTTP-GET 或 HTTP-POST 与 XML Web service 进行通信的特殊情况,可以为使用这些协议的 Web 应用程序添加对这些协议的支持。
在整个计算机上禁用 HTTP-GET 和 HTTP-POST
协议(建议)
使用常用的文本编辑器打开 Machine.config 文件。(默认安装将 Machine.config 放在
C:WINDOWSMicrosoft.NETFrameworkv1.0.3705CONFIG 文件夹中。)
在 webServices
节中标出添加 HTTP-GET 和 HTTP-POST 支持的命令行。执行此操作后,webServices
节应如下所示:
<webServices>
<protocols>
<add name="HttpSoap"/>
<!-- <add
name="HttpPost"/> -->
<!-- <add name="HttpGet"/>
-->
<add name="Documentation"/>
</protocols>
</webServices>
保存 Machine.config。
此配置更改将在下一次对该计算机上的 XML Web service
发出请求时生效。
在单个 Web 应用程序上禁用 HTTP-GET 和 HTTP-POST
协议
使用常用的编辑器打开 Web 应用程序根目录中的 Web.config 文件。(如果不存在 Web.config
文件,则创建该文件。)
修改 Web.config 的 webServices 节,使用以下格式显式删除 HTTP-POST 和
HTTP-GET 协议(如果 Web.config 文件不包含 webServices
节,则添加该节):
<webServices>
<protocols>
<remove
name="HttpPost" />
<remove
name="HttpGet" />
</protocols>
</webServices>
保存 Web.config。
此配置更改将在下一次对该 Web 应用程序上的 XML Web service
发出请求时生效。
在单个 Web 应用程序上添加 HTTP-GET 和 HTTP-POST 协议支持
使用常用的编辑器打开 Web
应用程序根目录中的 Web.config 文件。(如果不存在 Web.config 文件,则创建该文件。)
修改 Web.config 的
webServices 节,使用以下格式添加 HTTP-POST 和 HTTP-GET 协议(如果 Web.config 文件不包含 webServices
节,则添加该节):
<webServices>
<protocols>
<add
name="HttpPost" />
<add
name="HttpGet" />
</protocols>
</webServices>
保存 Web.config。
此配置更改将在下一次对该 Web 应用程序上的 XML Web service
发出请求时生效。
禁用 HTTP-GET 和/或 HTTP-POST
的影响
对于生产用计算机,禁用 HTTP-GET 和 HTTP-POST
协议所带来的弊端微乎其微。弊端包括:
XML Web service 的默认服务帮助页面继续有效,但潜在的客户端将无法使用服务帮助页面上的
Invoke(调用)按钮测试 XML Web service。
如果要在 Microsoft Visual Studio? .NET 中调试
XML Web service,您必须创建一个测试客户端程序。
对于投入使用的 XML Web service,这两个弊端都可以轻松克服,因为
Visual Studio .NET 提供了 Add Web Reference(添加 Web 引用)命令,使创建 XML Web service
的客户端变得非常简单。
总结
提供用 ASP.NET 创建的 XML Web services
的生产用计算机应该在整个计算机中禁用对 HTTP-GET 和 HTTP-POST
消息处理协议的支持,以避免在很多情况下可能出现的安全问题。对于早期开发而言,您可以在开发用计算机上启用这些协议;这样,开发用计算机便可以使用服务帮助页面来测试
XML Web services。将计算机投入实际使用时,请修改 .config 文件以禁用 HTTP-GET 和 HTTP-POST
协议。
需要说明的是,这并不是 XML Web service 开发人员应当采取的唯一安全措施,它只是保护 XML Web service 的安全所涉及的诸多步骤和问题之一。
- 1上海OA与企业信息化之路
- 2联合国《2003 年电子商务与发展报告》
- 3IDC:网络服务的宣传是否乐观过头?
- 4上海OA能赚钱
- 5开启“黄金屋”--析个人上海OA
- 6企业报告管理(ERM)与CRM(AMT 黄健 编译)
- 7泛普OA软件2014年-2018年在大上海重点发展100家代理商
- 8没有哪个OA软件选型者不关心OA软件的价格
- 9Web服务的标准之争和商机之争
- 10WEB服务“不是”什么
- 11上海OA词典
- 12通往供应链整合的道路:上海OA初步(by AMT 姚磊)
- 13与IBM微软分庭抗礼 Sun欲当WS-I新董事
- 14.Net和Java机会均等
- 15协作,“让我们畅谈”
- 16上海OA软件市场2006年将达20亿欧元
- 17架起结构化和非结构化数据之间的桥梁(AMT 唐晓辉 编译)
- 18IBM全球“大脑”:蓝色大象翩翩起舞的知识动力
- 19机构上海OA的实务指引
- 20微软为推XML搞结盟
- 21IBM发布新软件,强化Web服务安全性
- 22第二代Web服务展望
- 23“管理信息化热点问题讨论”之八:上海OA很好,但到底如何实现(by AMT 孔祥云 徐家俊)
- 24有效的知识
- 25跨越信息访问的鸿沟!(by AMT 方厚政)
- 26PKM:个人上海OA
- 27促进术语标准化 W3C出版“网络服务字汇表”
- 28个人上海OA(PKM)如何实施?(田志刚)
- 29Web服务防黑谈(一)
- 30避免上海OA项目失败的十大要项
成都公司:成都市成华区建设南路160号1层9号
重庆公司:重庆市江北区红旗河沟华创商务大厦18楼