監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉

關(guān)于安全的建議:對(duì)投入使用的XML Web Services禁用HTTP-GET和HTTP-POST協(xié)議

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

AMTeam.org

關(guān)于安全的建議:對(duì)投入使用的XML Web Services禁用HTTP-GET和HTTP-POST協(xié)議


Microsoft Corporation

2002 年 2 月

摘要:出于安全原因,Web service 操作人員可能需要對(duì) XML Web services 禁用 HTTP-GET 和 HTTP-POST 消息處理協(xié)議。禁用這些協(xié)議有助于防止外部 Web 站點(diǎn)與您的 Intranet 上的 XML Web services 進(jìn)行惡意通信。

簡(jiǎn)介

由于 HTTP-GET 和 HTTP-POST 消息處理協(xié)議的固有功能,在某些條件下,惡意 Web 頁(yè)可以使用它所定義的參數(shù)調(diào)用在防火墻后面運(yùn)行的 XML Web service。這與某些基于 HTTP-GET 的惡意重定向問(wèn)題類似。如果 XML Web service 支持使用 HTTP-GET 或 HTTP-POST 消息處理協(xié)議(對(duì)于使用 ASP.NET 創(chuàng)建的 XML Web services,將默認(rèn)啟用這些協(xié)議)進(jìn)行通信,就可能會(huì)發(fā)生此類安全問(wèn)題。

盡管使用 HTTP-POST 創(chuàng)建惡意 Web 頁(yè)并不容易,但如果 XML Web services 沒(méi)有使用 HTTP-GET 和 HTTP-POST 消息處理協(xié)議,還是應(yīng)該在提供用 ASP.NET 創(chuàng)建的 XML Web services 的生產(chǎn)用計(jì)算機(jī)上禁用對(duì)這兩個(gè)協(xié)議的支持。

圖 1:常見(jiàn)的惡意通信事件

步驟 說(shuō)明

1 位于防火墻后面的 HTTP 客戶端(如 Microsoft? Internet Explorer)瀏覽一個(gè)包含鏈接的惡意 Web 頁(yè)。

2 Web 服務(wù)器向客戶端返回一個(gè)包含惡意鏈接的 Web 頁(yè)。當(dāng)用戶單擊該鏈接時(shí),即對(duì)客戶端所在的 Intranet 上的 XML Web service 發(fā)出請(qǐng)求(用戶并不知道該請(qǐng)求)。

3 惡意 Web 頁(yè)將使用基于 Web 頁(yè)提供的參數(shù)和用戶憑據(jù)向 XML Web service 發(fā)出請(qǐng)求。

只有在下列條件下才會(huì)發(fā)生圖 1 所示的情況:

XML Web service 支持使用 HTTP-GET 或 HTTP-POST 消息處理協(xié)議進(jìn)行通信。(使用 HTTP-POST 的情況比較復(fù)雜,請(qǐng)參閱以下關(guān)于 HTTP-POST 的代碼示例。)

惡意 Web 頁(yè)的外部開(kāi)發(fā)人員了解 XML Web service 是否存在以及如何調(diào)用的詳細(xì)信息。

客戶端具有執(zhí)行內(nèi)部 XML Web service 的訪問(wèn)權(quán)限。

雖然這種情況概括的是如何使用 HTTP-GET 惡意調(diào)用 XML Web service,但同樣適用于 HTTP-POST。要使用 HTTP-POST 以類似的方法執(zhí)行 XML Web service,Web 頁(yè)必須包含腳本,以便在用戶單擊某處導(dǎo)致消息發(fā)送回外部 Web 服務(wù)器時(shí),將客戶端重定向到 XML Web service。

下面的代碼示例是一個(gè)包含惡意鏈接的 Web 頁(yè),該鏈接指向在客戶端所在的 Intranet 上運(yùn)行并使用 HTTP-GET 協(xié)議的 XML Web service。在此示例中,用戶必須單擊鏈接;不過(guò),也有可能 Web 頁(yè)包含執(zhí)行重定向的腳本,因而不需要用戶的交互操作。

<html>
<body>
<a
 HREF = "
http://AnIntranetServer/401K.asmx/ChangeWithholding?PreTax=
 
0@PostTax=0">快速致富!</a>
</body>
</html>

同樣,下面的代碼示例是一個(gè)包含惡意按鈕的 Web 頁(yè),該按鈕能夠與在客戶端所在的 Intranet 上運(yùn)行并使用 HTTP-POST 協(xié)議的 XML Web service 進(jìn)行通信。

<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="快速致富。單擊此處了解詳細(xì)消息。" ></p>
</form>

需要說(shuō)明的是,這種情況對(duì)只能通過(guò) HTTP 協(xié)議的 SOAP 與之通信的 XML Web service 不適用。SOAP 請(qǐng)求需要 SOAPAction HTTP 標(biāo)頭,而 Web 頁(yè)不具有在使用鏈接的重定向中包含該標(biāo)頭的功能。

對(duì)基于 ASP.NET 的 XML Web Services 禁用 HTTP-GET 和 HTTP-POST 協(xié)議

默認(rèn)情況下,客戶端可以使用以下三種協(xié)議與使用 ASP.NET 創(chuàng)建的 XML Web services 進(jìn)行通信:HTTP-GET、HTTP-POST 和通過(guò) HTTP 的 SOAP。使用 Microsoft .NET 框架支持的配置系統(tǒng),您可以在單獨(dú)的 Web 應(yīng)用程序或整個(gè)計(jì)算機(jī)中修改 XML Web services 所支持的協(xié)議。

無(wú)論是在計(jì)算機(jī)上還是在單個(gè) Web 應(yīng)用程序中禁用 HTTP-GET 和 HTTP-POST,都只需修改配置文件,該文件在 .NET 框架中只是一個(gè)簡(jiǎn)單的文本文件。計(jì)算機(jī)的默認(rèn)配置是在 Machine.config 文件中進(jìn)行設(shè)置的,對(duì)于每個(gè) Web 應(yīng)用程序,您可以修改該 Web 應(yīng)用程序的根目錄中的 Web.config 文件而不是 Machine.config 文件。

在不需要 HTTP-GET 和 HTTP-POST 消息處理協(xié)議的生產(chǎn)用計(jì)算機(jī)上,最好在整個(gè)計(jì)算機(jī)中禁用對(duì)這些協(xié)議的支持。對(duì)于 XML Web service 客戶端使用 HTTP-GET 或 HTTP-POST 與 XML Web service 進(jìn)行通信的特殊情況,可以為使用這些協(xié)議的 Web 應(yīng)用程序添加對(duì)這些協(xié)議的支持。

在整個(gè)計(jì)算機(jī)上禁用 HTTP-GET 和 HTTP-POST 協(xié)議(建議)

使用常用的文本編輯器打開(kāi) Machine.config 文件。(默認(rèn)安裝將 Machine.config 放在 C:WINDOWSMicrosoft.NETFrameworkv1.0.3705CONFIG 文件夾中。)

在 webServices 節(jié)中標(biāo)出添加 HTTP-GET 和 HTTP-POST 支持的命令行。執(zhí)行此操作后,webServices 節(jié)應(yīng)如下所示:

<webServices>
    <protocols>
      <add name="HttpSoap"/>
         <!-- <add name="HttpPost"/> -->
         <!-- <add name="HttpGet"/>  -->
      <add name="Documentation"/>
    </protocols>
</webServices>

保存 Machine.config。

此配置更改將在下一次對(duì)該計(jì)算機(jī)上的 XML Web service 發(fā)出請(qǐng)求時(shí)生效。

在單個(gè) Web 應(yīng)用程序上禁用 HTTP-GET 和 HTTP-POST 協(xié)議

使用常用的編輯器打開(kāi) Web 應(yīng)用程序根目錄中的 Web.config 文件。(如果不存在 Web.config 文件,則創(chuàng)建該文件。)

修改 Web.config 的 webServices 節(jié),使用以下格式顯式刪除 HTTP-POST 和 HTTP-GET 協(xié)議(如果 Web.config 文件不包含 webServices 節(jié),則添加該節(jié)):

<webServices>
     <protocols>
       <remove name="HttpPost" />
       <remove name="HttpGet" />
     </protocols>
</webServices>

保存 Web.config。

此配置更改將在下一次對(duì)該 Web 應(yīng)用程序上的 XML Web service 發(fā)出請(qǐng)求時(shí)生效。

在單個(gè) Web 應(yīng)用程序上添加 HTTP-GET 和 HTTP-POST 協(xié)議支持

使用常用的編輯器打開(kāi) Web 應(yīng)用程序根目錄中的 Web.config 文件。(如果不存在 Web.config 文件,則創(chuàng)建該文件。)

修改 Web.config 的 webServices 節(jié),使用以下格式添加 HTTP-POST 和 HTTP-GET 協(xié)議(如果 Web.config 文件不包含 webServices 節(jié),則添加該節(jié)):

<webServices>
     <protocols>
       <add name="HttpPost" />
       <add name="HttpGet" />
     </protocols>
</webServices>

保存 Web.config。

此配置更改將在下一次對(duì)該 Web 應(yīng)用程序上的 XML Web service 發(fā)出請(qǐng)求時(shí)生效。

禁用 HTTP-GET 和/或 HTTP-POST 的影響

對(duì)于生產(chǎn)用計(jì)算機(jī),禁用 HTTP-GET 和 HTTP-POST 協(xié)議所帶來(lái)的弊端微乎其微。弊端包括:

XML Web service 的默認(rèn)服務(wù)幫助頁(yè)面繼續(xù)有效,但潛在的客戶端將無(wú)法使用服務(wù)幫助頁(yè)面上的 Invoke(調(diào)用)按鈕測(cè)試 XML Web service。

如果要在 Microsoft Visual Studio? .NET 中調(diào)試 XML Web service,您必須創(chuàng)建一個(gè)測(cè)試客戶端程序。

對(duì)于投入使用的 XML Web service,這兩個(gè)弊端都可以輕松克服,因?yàn)? Visual Studio .NET 提供了 Add Web Reference(添加 Web 引用)命令,使創(chuàng)建 XML Web service 的客戶端變得非常簡(jiǎn)單。

總結(jié)

提供用 ASP.NET 創(chuàng)建的 XML Web services 的生產(chǎn)用計(jì)算機(jī)應(yīng)該在整個(gè)計(jì)算機(jī)中禁用對(duì) HTTP-GET 和 HTTP-POST 消息處理協(xié)議的支持,以避免在很多情況下可能出現(xiàn)的安全問(wèn)題。對(duì)于早期開(kāi)發(fā)而言,您可以在開(kāi)發(fā)用計(jì)算機(jī)上啟用這些協(xié)議;這樣,開(kāi)發(fā)用計(jì)算機(jī)便可以使用服務(wù)幫助頁(yè)面來(lái)測(cè)試 XML Web services。將計(jì)算機(jī)投入實(shí)際使用時(shí),請(qǐng)修改 .config 文件以禁用 HTTP-GET 和 HTTP-POST 協(xié)議。

需要說(shuō)明的是,這并不是 XML Web service 開(kāi)發(fā)人員應(yīng)當(dāng)采取的唯一安全措施,它只是保護(hù) XML Web service 的安全所涉及的諸多步驟和問(wèn)題之一。

發(fā)布:2007-03-25 10:35    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
上海OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢