SafeCtl.exe ActiveX 控制項中實作 IObjectSafety

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:164119
本文已封存。本文係以「現狀」提供且不會再更新。
結論
SafeCtl.exe 範例示範如何修改MFC 架構 ActiveX 控制項,以指出是誰發行程式碼以及是否控制項已遭修改。這個範例可以幫助識別是否控制項是以編寫指令碼安全和初始化。
其他相關資訊
的下列檔案是可以從 Microsoft 下載下載中心:
如需詳細資訊有關如何下載 Microsoft 支援檔案,請按一下下列的資訊文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
119591 如何從線上服務取得 Microsoft 的支援檔案
Microsoft 掃描這個檔案有無病毒。Microsoft 會使用最目前的日期是可用的病毒偵測軟體的檔案公佈。檔案會儲存在安全的伺服器,以避免任何未經授權的更改檔案。

在 Internet Explorer 3.0 和更新版本,使用者可以將程式碼 ActiveX 控制項的表單中加入他們的網頁。的<object>標籤用來指定控制項。之後的執行個體建立控制項,可以設定其屬性,透過控制項的保存性介面。例如,每個<param>加上標籤的 [Internet Explorer]<object>標籤的內容中發生時正在剖析的 HTML 網頁,Internet Explorer 會傳遞到對應控制項的屬性包<b00></b00></object></object>IPersistPropertyBag 介面。此外,可以是控制項的行為透過使用自訂內嵌於頁面指令碼執行方法並修改 「 自動化 」 控制項的公開的屬性介面。

授權程式碼簽署技術可讓一般使用者找出是誰發行程式碼,並驗證 [沒有人已遭他人修改簽發後的程式碼。它並不保證程式碼是安全的時機其屬性都會初始化為不受信任的值或當其自動化模型是由未受信任的指令碼所主導。若要避免這種潛在的安全性風險,預設 Internet Explorer 安全性設定,可透過 安全性 Internet Explorer] 索引標籤 選項屬性表中需要的控制項就會將自己登錄為實作適當的元件類別或控制項的實作 IObjectSafety 介面。這個範例會說明這兩種。

它會將之前控制項的屬性內嵌在 HTML 頁面中,Internet Explorer 查詢控制項 IObjectSafety.Internet Explorer 如果支援,然後呼叫 SetInterfaceSafetyOptions 在這個介面上的方法傳遞值INTERFACESAFE_FOR_UNTRUSTED_DATA 以及的介面識別項 (IID)持續性的介面。在 HTML 網頁,越能夠屬性透過初始化<param>標記,IID 是 IID_IPersistPropertyBag。的IID 被提供給您可能想要在保護安全情況某些介面,但不是能在其他人,並在這個範例中,並不重要。執行範例會檢查以確定支援的介面。如果控制項可以用戶端的系統,無論資料不會用它可能會初始化該持續性介面透過支援保存性介面,則控制項的實作 IObjectSafety::SetInterfaceSafetyOptions 方法應傳回 S_OK。否則,應該會傳回 E_FAIL。

然後才允許內嵌於網頁會執行任何指令碼同樣地,Internet Explorer 會呼叫到控制項的 IObjectSafety:: SetInterfaceSafetyOptions 方法,但是而是會將值INTERFACESAFE_FOR_UNTRUSTED_CALLER 和一些指令碼的介面的 IID這通常是 IID_IDispatch。控制項應傳回 S_OK 或 E_FAIL適當地。

如果控制項不支援 IObjectSafety,Internet Explorer 請參閱使用元件] 類別目錄管理員如果控制項實作的 「 初始設定的安全 」 的類別,CATID_SafeForInitializing,而且 「 安全指令碼處理 」 的類別,CATID_SafeForScripting,分別。

如果控制項不支援 IObjectSafety 而且尚未註冊本身做為實作適當的元件類別,而 Internet Explorer 的安全性層級設定為 [高],預設值,Internet Explorer 會初始化控制項的屬性也不會執行任何網頁中內嵌的指令碼。在此案例中,使用者會收到對話方塊包含下列文字:
避免潛在的安全性違規
此頁面包含不是可驗證安全,若要顯示的主動式內容。若要保護您將不會顯示電腦上,此內容。
下列是清單指導方針,是取自 Paul Johns 的文章中,「 簽章和標記ActiveX 控制項:"
  • 控制項不去檔案系統。
  • 控制項不會不會去登錄 (除非以註冊及取消註冊本身)。
  • 控制項不會不 overindex 陣列或其他方式不正確地處理記憶體。
  • 控制項驗證 (並更正) 所有輸入,包括初始化、 方法參數和屬性設定函式。
  • 控制項不會不會濫用所提供的任何資料使用者或即將該使用者。
  • 控制項是以不同的測試案例。
如需詳細資訊,請造訪下列 Microsoft 網站站台:
簽章和將 ActiveX 控制項標示
http://msdn2.microsoft.com/en-us/library/ms974305.aspx
如果控制項的作者已經確認已經上述準則除了任何其他他們可以將條件符合,就應該考慮兩者都支援 IObjectSafety 和註冊和實作適當的控制項元件類別。如需的優點和缺點的每個清單這些方法中,檢閱 Paul Johns 的文件中的對應區段「 簽章,將 ActiveX 控制項標示"。

若要編譯

Microsoft Visual c + + 5.0 或 Microsoft 建置範例需要Visual c + + 6.0。您從封存中解壓縮檔案之後,載入Safectl.mdp 使用 Microsoft 開發人員 Studio 中,將專案和建置專案。為組件控制項應該在建置程序中,登錄本身。

警告 您可以修改這個範例使用兩個前置處理器之前本節中稍後所列的符號,您必須取消註冊如果它已經內建或登錄在電腦上的控制項。若要這樣做,執行與 Regsvr32.exe /u 切換為您的控制項。您也可以新增自訂工具中的項目會這樣目前專案的開發人員 Studio。在上 工具 功能表中,按一下 自訂然後按一下的 工具 建立下列新的項目] 索引標籤資訊:
                Name: &Un-register ActiveX Control             Command: e:\Program Files\DevStudio\SharedIDE\BIN\REGSVR32.EXE           Arguments: /u /v "$(TargetPath)"   Initial Directory: $(TargetDir)				
此時,您可以使用"工具/取消註冊 ActiveX控制 「 若要移除註冊您的控制項,您新增或移除之前的項目特定範例的前置處理器定義。

若要建置的控制項,讓它會自行登錄為實作 「 安全初始化 」 和 「 安全指令碼處理 」 的元件類別,請依照下列步驟執行:
  1. 在上 專案 功能表中,按一下設定.
  2. 按一下 [ C + + 索引標籤,,然後定義下列前置處理器定義:
    L_USE_COMCAT
  3. 按一下 [ [確定] 若要關閉設定 對話方塊中,然後再重新建置控制項。
若要建立控制項,而是會實作 IObjectSafety按照先前的步驟,但取代與 L_USE_COMCATL_IMPL_OBJECTSAFETY。

它也是有效來定義兩個前置處理器符號。請注意這些符號是針對此專案。根據預設,在專案的建置設定會定義兩個前置處理器符號。

若要執行

這個範例控制項已經建置後已註冊成功,開始 Internet Explorer,然後再開啟 [Safectl.htm] 頁面上,這是隨附於範例。

如果已設定控制項若要將自己登錄為安全或實作 IObjectSafety應該會顯示控制項標題 「 安全初始化 ! 」當在您按一下控制項,您應該會收到下列訊息:
我必須是安全用於指令碼!
如果網際網路總管設定為其最高的安全性設定,並不會產生關聯的指令碼執行,而且您會收到下列訊息:
不安全初始化!


附註 如果您是建置和測試的不同的設定範例,請確定您重新整理瀏覽器中的網頁。如果您不這樣做重新整理頁面,您可能使用而不是控制項的快取的版本最新的組建。
参考
如需有關安全 Api 的詳細資訊,請參閱安全性ActiveX SDK 線上文件中的 API 參考。

如需詳細資訊關於程式碼簽署的資訊,請參閱 「 簽章與 Microsoft 授權技術 」 ActiveX SDK 線上文件中。

如需詳細資訊元件類別的相關資訊,請參閱中的 「 元件類別 」 主題ActiveX SDK 線上文件中。

如需有關如何實作元件物件模型 (COM)介面在 MFC 中,請按一下下面的文章編號,檢視中的文件Microsoft 知識庫 」:
141277如何使用 Visual c + + 覆寫 MFC 應用程式中的介面
關於如何開發的ActiveX 控制項,以及如何將它部署的網頁,請造訪下列 Microsoft網站:
所謂的 Abc MFC ActiveX 控制項的
http://msdn.microsoft.com/en-us/library/ms968497.aspx
安全的安全性 SafeCtl
注意 :本文屬於「快速發佈」文章,係由 Microsoft 技術支援或組織內部直接建立。 本文所包含的資訊是為了回應新問題而依現況提供。 因此為了迅速對外發佈,文章內容可能含有印刷錯誤,而且可能會在不另行通知的情況下進行修改。 如需其他考量事項,請參閱使用規定

警告:本文為自動翻譯

內容

文章識別碼:164119 - 最後檢閱時間:01/12/2015 15:55:26 - 修訂: 3.0

Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 6.0, Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition

  • kbnosurvey kbarchive kbdownload kbfile kbinfo kbsample kbmt KB164119 KbMtzh
意見反應