DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 轉貼:關於安全的建議:對投入使用的 XML Web Services 禁用
轉貼:關於安全的建議:對投入使用的 XML Web Services 禁用
編輯:XML詳解     
議:對投入使用的 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 的生產用計算機上禁用對這兩個協議的支持。
/School/UploadFiles_7810/201005/20100529004913301.gif
圖 1:常見的惡意通信事件步驟說明1位於防火牆後面的 HTTP 客戶端(如 Microsoft® Internet Explorer)浏覽一個包含鏈接的惡意 Web 頁。2Web 服務器向客戶端返回一個包含惡意鏈接的 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 協議(建議)

  1. 使用常用的文本編輯器打開 Machine.config 文件。(默認安裝將 Machine.config 放在 C:\Windows\Microsoft.Net\Framework\v1.0.3705\CONFIG 文件夾中。)
  2. 在 webServices 節中標出添加 HTTP-GET 和 HTTP-POST 支持的命令行。執行此操作後,webServices 節應如下所示:<webServices>
        <protocols>
          <add name="HttpSoap"/>
             <!-- <add name="HttpPost"/> -->
             <!-- <add name="HttpGet"/>  -->
          <add name="Documentation"/>
         </protocols>
    </webServices>
  3. 保存 Machine.config。
    此配置更改將在下一次對該計算機上的 XML Web service 發出請求時生效。

在單個 Web 應用程序上禁用 HTTP-GET 和 HTTP-POST 協議

  1. 使用常用的編輯器打開 Web 應用程序根目錄中的 Web.config 文件。(如果不存在 Web.config 文件,則創建該文件。)
  2. 修改 Web.config 的 webServices 節,使用以下格式顯式刪除 HTTP-POST 和 HTTP-GET 協議(如果 Web.config 文件不包含 webServices 節,則添加該節):<webServices>
         <protocols>
           <remove name="HttpPost" />
           <remove name="HttpGet" />
         </protocols>
    </webServices>
  3. 保存 Web.config。
    此配置更改將在下一次對該 Web 應用程序上的 XML Web service 發出請求時生效。

在單個 Web 應用程序上添加 HTTP-GET 和 HTTP-POST 協議支持

  1. 使用常用的編輯器打開 Web 應用程序根目錄中的 Web.config 文件。(如果不存在 Web.config 文件,則創建該文件。)
  2. 修改 Web.config 的 webServices 節,使用以下格式添加 HTTP-POST 和 HTTP-GET 協議(如果 Web.config 文件不包含 webServices 節,則添加該節):<webServices>
         <protocols>
           <add name="HttpPost" />
          &nbs

    p;<add name="HttpGet" />
         </protocols>
    </webServices>

  3. 保存 Web.config。

    1. 此配置更改將在下一次對該 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 的安全所涉及的諸多步驟和問題之一。 

    XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
    Copyright © DIV+CSS佈局教程網 All Rights Reserved