如何檢閱 CSSI 弱點的 MTS/ASP 程式碼

文章翻譯 文章翻譯
文章編號: 253121 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
全部展開 | 全部摺疊

結論

本文將告訴您如何識別和修正很容易跨網站指令碼的安全性問題 (CSSI) 的 Microsoft 交易伺服器/主動伺服器網頁 (ASP) 應用程式。 不正確地驗證或格式化的唯一輸入讓應用程式容易受到攻擊。

其他相關資訊

CSSI 問題被根目錄應用程式處理資料驗證及格式化的方式,因此最適合處理從展示層。

這一層通常會組成 ASP 網頁,且有時它可能包含協助某些元件在顯示 ASP 網頁的 HTML 轉譯。

在後者的情況下很重要請注意雖然應用程式應該執行相同作業來保護本身 CSSI 為僅 ASP 應用程式從,實體的實作會將會造成一些驗證/格式設定的程式碼,以執行 ASP 網頁中,一些元件中。如需 CSSI 和 ASP 的詳細資訊,請參閱下列 「 Microsoft 知識庫 」 文件:
253119如何檢閱 CSSI 弱點的 ASP 程式碼
下列步驟可以幫助您找出並更正 ASP 應用程式容易遭到 CSSI:
  1. 尋找 ASP 或元件會產生要顯示的 HTML 程式碼。有兩種典型的案例:
    • 元件建置,並傳回 HTML 字串,ASP 會直接寫入回應。
    • 元件呼叫 Response.Write 在內部將直接寫入頁面。通常是回應物件參考是從 [ObjectContext 取得藉由呼叫 GetObjectContext.Item("Response")。
  2. 找出 HTML 輸出是否包含應用程式資料。 此資料可以來自各種如資料庫、 檔案、 Cookie 的來源其他的物件變數等等。
  3. 判斷適當的解決方案。有找到 ASP 或元件程式碼會產生 HTML 使用某些輸入,您必須為特定的應用程式來判斷適當的解決方案。解決方案包括 (但不是限於) 驗證/篩選無效的資料,或它的編碼方式。

格式的指導方針

這些指導方針可協助您識別要應付適當格式的位置。

當將資訊寫入網頁,特定應用程式資料必須是 HTMLEncoded。不重要到 HTMLEncode 標記是要在 HTML 網頁。因此,如果您的元件函式傳回 HTML,[HTMLEncode 有其內來完成。

要從元件 HTMLEncode 字串,您必須 ASP 伺服器物件的參照。您可以從 MTS ObjectContext.Items 集合取得此參照:
sGoodHTML = GetObjectContext.Item("Server").HTMLEncode(sRawData) 
				
範例: 這個程式碼會產生資料表資料列以取自資料錄集的值。這個程式碼不編碼輸出:
Do While Not oRecordset.EOF
     sHTML = sHTML & "<TR>" 
     sHTML = sHTML & "<TD>" & oRecordset("FirstName") & "</TD>"
     sHTML = sHTML & "<TD>" & oRecordset("Address") & "</TD>"
     sHTML = sHTML & "</TR>" 
Loop
				
固定的這段程式碼時請注意總值本身是 HTMLEncoded,而不是整個 HTML 字串:
Dim oServer As ASPTypeLibrary.Server

Set oServer = GetObjectContext.Item("Server")

Do While Not oRecordset.EOF
     sHTML = sHTML & "<TR>" 
     sHTML = sHTML & "<TD>" & oServer.HTMLEncode( oRecordset("FirstName")) & "</TD>"
     sHTML = sHTML & "<TD>" & oServer.HTMLEncode( oRecordset("Address")) & "</TD>"
     sHTML = sHTML & "</TR>" 
Loop

Set oServer = Nothing
				
注意中繼 oServer 物件參考使用。這是包含善用早期繫結,並避免解析 ObjectContext.Item 查閱每一次。若要宣告該物件為 ASPTypeLibrary.Server,您必須包含 「 Microsoft 正在使用中伺服器頁物件程式庫"的參考。

請考慮下列方針:
  • 商業元件不應該呼叫 HTMLEncode (除非它們也會呈現 HTML)。這是一項工作的展示層。
  • 通常,使用 HTMLEncode 或任何的 ASP 物件元件應該實際在電腦上執行相同做為網際網路資訊伺服器 (IIS)。
  • 解決方案包括 (但不是限於) 驗證輸入的參數和格式設定輸入參數。

?考

如需詳細資訊,請參閱下列摘要報告從該電腦緊急回應小組 (CERT) 在 Carnegie 產品大學]:
http://www.cert.org/advisories/CA-2000-02.html
如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件]:
252985如何避免跨網站指令碼處理安全性問題的 Web 應用程式
253120如何檢視 [Visual InterDev 產生 CSSI 弱點的程式碼
253117如何防止網際網路檔案總管] 及 [Outlook Express CSSI 弱點

屬性

文章編號: 253121 - 上次校閱: 2013年10月20日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft Transaction Services 2.0
關鍵字:?
kbnosurvey kbarchive kbmt kbcssi kbhowto KB253121 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:253121
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com