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

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

圖 1:常見的惡意通信事件

步驟 說明

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

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

3 惡意 Web 頁將使用基于 Web 頁提供的參數(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 頁的外部開發(fā)人員了解 XML Web service 是否存在以及如何調(diào)用的詳細(xì)信息。

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

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

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

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

同樣,下面的代碼示例是一個(gè)包含惡意按鈕的 Web 頁,該按鈕能夠與在客戶端所在的 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>

需要說明的是,這種情況對(duì)只能通過 HTTP 協(xié)議的 SOAP 與之通信的 XML Web service 不適用。SOAP 請(qǐng)求需要 SOAPAction HTTP 標(biāo)頭,而 Web 頁不具有在使用鏈接的重定向中包含該標(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 和通過 HTTP 的 SOAP。使用 Microsoft .NET 框架支持的配置系統(tǒng),您可以在單獨(dú)的 Web 應(yīng)用程序或整個(gè)計(jì)算機(jī)中修改 XML Web services 所支持的協(xié)議。

無論是在計(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é)議(建議)

使用常用的文本編輯器打開 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é)議

使用常用的編輯器打開 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é)議支持

使用常用的編輯器打開 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é)議所帶來的弊端微乎其微。弊端包括:

XML Web service 的默認(rèn)服務(wù)幫助頁面繼續(xù)有效,但潛在的客戶端將無法使用服務(wù)幫助頁面上的 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)的安全問題。對(duì)于早期開發(fā)而言,您可以在開發(fā)用計(jì)算機(jī)上啟用這些協(xié)議;這樣,開發(fā)用計(jì)算機(jī)便可以使用服務(wù)幫助頁面來測(cè)試 XML Web services。將計(jì)算機(jī)投入實(shí)際使用時(shí),請(qǐng)修改 .config 文件以禁用 HTTP-GET 和 HTTP-POST 協(xié)議。

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

發(fā)布:2007-03-25 10:35    編輯:泛普軟件 · xiaona    [打印此頁]    [關(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在線咨詢