如何檢視 [Visual InterDev 產生 CSSI 弱點的程式碼

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

結論

下列文件討論如何識別和很容易 CSSI (跨網站指令碼處理安全性議題) 的正確 Visual InterDev 應用程式。 只有輸入其中不正確地驗證或格式化會讓您的應用程式容易受到攻擊。

本文的重點在於 Visual InterDev 設計時間控制項 (DTC) 和指令碼程式庫。 如 ASP 程式碼有關的一般方針,請參閱下列 「 知識庫 」 文件:
253119如何檢閱 CSSI 這項弱點的 ASP 程式碼

其他相關資訊

Visual InterDev DTC 呈現給開發人員唯一的挑戰,因為一些程式碼會自動產生。 開發人員可能不熟悉的指令碼物件所產生的特定實作和它們或最適合處理之道的任何弱點。 本文涵蓋所有已知的問題的各種 DTC,並且也涵蓋了可能的選項,以解決這些弱點。

問題可分為兩種特定的類別:
  1. 編寫指令碼來顯示來自一個資料庫與資料庫資料的 DTC 包含來自使用者的輸入。
  2. 建立要顯示指令碼的 DTC 或使用從用戶端提交的資料。
在這兩種情況下適當的驗證和輸出值的編碼方式防止 DTC 為基礎的頁面使用在 CSSI 攻擊。

使用任何方法會擷取資訊的 DTC 時 (例如.getCaption、.getText、.Value) 該 DTC,從時使用提供的使用者資訊設定值產生的字串不 HTMLEncoded。 而且,可繫結至資料庫欄位某些 DTC 會顯示資料庫中未經處理的資訊而不需編碼方式。 為等您應該 HTMLEncode 這些值時顯示給瀏覽器。 例如:
Response.Write Server.HTMLEncode(Textbox1.value)
				
如果資料是用來做為 URL 的一部分,您應該改用 URLEncode。 例如:
Response.Write "<A HREF=http://webserver/webapplication/page.asp?data=" & Server.URLEncode(Textbox1.value) & ">Click here!</A>"
				
因為有多種方式來編碼 entrusted 指令碼的程式碼字元,您應該明確設定設定為在網頁瀏覽器呈現的字元。 您可以只要插入文件的 <head>標記之間的中的用戶端 <meta>標記。 例如:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset= ISO-LATIN-1">
				
可以也在作業從 ASP 使用 Response.Charset 屬性:

<% Response.Charset= "ISO-LATIN-1" %>
				


以下是一些常見的範例:

摺疊此表格展開此表格
顯示範例程式碼
按鈕 DTC 的值
Response.Write Button1.Value()
核取方塊 DTC 的標號
Response.Write CheckBox1.getCaption()
標籤 DTC 的標號
Response.Write Label1.getCaption()
清單方塊 DTC 的文字
Response.Write Listbox1.getText()
選項群組 DTC 的值
Response.Write OptionGroup1.getValue()
TextBox DTC 的值
Response.Write Textbox1.Value()


以下是可能的解決方案,如下列範例:

摺疊此表格展開此表格
顯示範例程式碼
按鈕 DTC 的值
Response.Write Server.HTMLEncode(Button1.Value())
核取方塊 DTC 的標號
Response.Write Server.HTMLEncode(CheckBox1.getCaption())
標籤 DTC 的標號
Response.Write Server.HTMLEncode(Label1.getCaption())
清單方塊 DTC 的文字
Response.Write Server.HTMLEncode(Listbox1.getText())
選項群組 DTC 的值
Response.Write Server.HTMLEncode(OptionGroup1.getValue())
TextBox DTC 的值
Response.Write Server.HTMLEncode(Textbox1.Value())


格線 DTC 會從資料庫擷取不 HTMLEncode 值。 如果您的資料庫會採用使用者輸入 (比方說訪客留言板),您應該 HTMLEncode 您的輸出。 這可透過按一下 [格線] 屬性對話方塊] 方塊的 [資料] 索引標籤並輸入:
=Server.HTMLEncode([fieldname])
				
Where 就是該資料行做為顯示每個欄位名稱。 大部分的 DTC 自動 HTMLEncode 資料從資料庫擷取顯示時 ; 有些不這樣做。 這些控制項應該要使用的額外程式碼,以確保輸出到用戶端已正確 HTMLEncoded。

注意:DTC 通常會自動實作必要的邏輯,以維護它們的狀態在來回往返至伺服器期間。在文字方塊 DTC 的情況下,例如當資訊均圓形正確 tripped Textbox.asp 指令碼程式庫的網頁伺服器 HTMLEncodes 文字內容方塊維護控制項的狀態的程序中。

?考

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

屬性

文章編號: 253120 - 上次校閱: 2013年10月20日 - 版次: 1.4
這篇文章中的資訊適用於:
  • Microsoft Visual InterDev 6.0 Standard Edition
關鍵字:?
kbnosurvey kbarchive kbmt kbcssi kbctrl kbhowto kbsecurity kbsecvulnerability KB253120 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:253120
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