SafeCtl.exe implementiert IObjectSafety-Steuerelement

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 164119 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Der SafeCtl.exe-Beispiel veranschaulicht das Ändern eines MFC-ActiveX-Steuerelement an, die den Code veröffentlicht und gibt an, ob ein Steuerelement manipuliert wurde. Das Beispiel kann helfen, um festzustellen, ob das Steuerelement sicher für Skripting "und" sicher für Initialisierung.

Weitere Informationen

Die folgende Datei steht zum Download im Microsoft Download Center:
SafeCtl.exe
Weitere Informationen dazu, wie Sie Microsoft Support-Dateien zu downloaden, klicken Sie auf die folgende KB-Artikelnummer:
119591So erhalten Sie Microsoft Support-Dateien von online-Diensten
Microsoft überprüft diese Datei auf Viren überprüft. Microsoft hat dazu die neueste Software zur Virenerkennung verwendet, die zum Zeitpunkt der Bereitstellung verfügbar war. Die Datei wird auf Servern mit verstärkter Sicherheit gespeichert, wodurch nicht autorisierten Änderungen an der Datei verhindert.

In Internet Explorer 3.0 oder höher können Benutzer Code in Form von ActiveX-Steuerelementen zu Ihren Webseiten hinzufügen. Das <object>-Tag wird verwendet, um ein Steuerelement angeben. Nachdem eine Instanz des Steuerelements erstellt wurde, können seine Attribute über das Steuerelement Dauerhaftigkeit Schnittstellen festgelegt werden. Internet Explorer übergibt z. B. für jede <param>-Tag, das im Kontext eines Tags <object>Internet Explorer, auftritt während der Analyse einer HTML-Seite, eine Eigenschaftensammlung über des entsprechenden SteuerelementsIPersistPropertyBag-Schnittstelle. Darüber hinaus kann das Verhalten eines Steuerelements mithilfe von Skripts, die in die Seite eingebettet angepasst werden, die die Methoden ausführen, und ändern Sie die Eigenschaften, die durch das Steuerelement Automatisierungsschnittstelle offen gelegt werden.

Authenticode-Codesignatur Technologie ermöglicht Endbenutzern zu identifizieren, die den Code veröffentlicht und sicherzustellen, dass niemand mit diesem Code manipuliert hat, seit Sie es signiert wurde. Es wird nicht garantiert, dass der Code sicher ist, wenn seine Eigenschaften mit nicht vertrauenswürdigen Werten initialisiert werden oder wenn seine Automatisierungsmodell von nicht vertrauenswürdigen Skripts gesteuert wird. Zur Vermeidung solcher potenzielle Sicherheit hazards, die standardmäßigen Internet Explorer-Sicherheitseinstellungen, den Zugriff über dieSicherheitRegisterkarte von Internet ExplorerOptionenEigenschaft Blatt, erfordern, dass ein Steuerelement selbst registrieren als die entsprechende Komponentenkategorien implementieren oder, dass das Steuerelement implementiert dieIObjectSafety-Schnittstelle. Das Beispiel veranschaulicht beide.

Bevor die Eigenschaften eines Steuerelements in einer HTML-Seite eingebettet wird Internet Explorer das Steuerelement für AbfragenIObjectSafety. Wenn unterstützt, ruft Internet Explorer anschließend dieSetInterfaceSafetyOptions-Methode auf dieser Schnittstelle übergeben des Werts INTERFACESAFE_FOR_UNTRUSTED_DATA sowie den Schnittstellenbezeichner (IID) der Schnittstelle für die Dauerhaftigkeit. Klicken Sie auf HTML-Seiten noch heute, wo Eigenschaften dazu, neigen über den Tag <param>initialisiert werden, ist die ID IID_IPersistPropertyBag. Die IID dient für Situationen, in denen Sie die Sicherheit auf einige Schnittstellen jedoch nicht auf andere Benutzer und dabei nicht von Bedeutung ist geschützt werden sollten. Die Beispielimplementierung überprüft, um sicherzustellen, dass die Schnittstelle unterstützt wird. Wenn das Steuerelement keinen Schaden auf dem Clientsystem, unabhängig von den Daten tun kann, mit dem kann über die Persistenz-Schnittstelle initialisiert werden und die Persistenz-Schnittstelle wird unterstützt, das Steuerelement Implementierung derIObjectSafety::SetInterfaceSafetyOptions-Methode sollte S_OK zurück. Andernfalls sollte E_FAIL zurückgegeben werden.

Alle Skripts, die in der Seite eingebettet sind ausgeführt werden, bevor Internet Explorer ebenso ruft durch des SteuerelementsIObjectSafety:: SetInterfaceSafetyOptions-Methode jedoch stattdessen übergibt den Wert INTERFACESAFE_FOR_UNTRUSTED_CALLER und die IID der einige Skripts Benutzeroberfläche, was normalerweise IID_IDispatch ist. Das Steuerelement sollte entsprechend S_OK oder E_FAIL zurück.

Wenn das Steuerelement nicht unterstützt.IObjectSafety, Verwendet Internet Explorer den Komponenten Kategorien-Manager sehen, wenn das Steuerelement die Kategorie "sicher für Initialisierung" CATID_SafeForInitializing und der Kategorie "sicher für Skripting" CATID_SafeForScripting, implementiert.

Wenn das Steuerelement nicht unterstützt.IObjectSafetywurde nicht registriert sich selbst als die entsprechende Komponentenkategorien implementieren und wenn die Internet Explorer-Sicherheitsstufe auf Hoch, der Standardwert festgelegt ist Internet Explorer nicht die Eigenschaften des Steuerelements initialisiert werden, noch führt er alle Skripts, die in die Seite eingebettet sind. In diesem Szenario wird die Endbenutzer ein Dialogfeld mit den folgenden Text:
Mögliche Sicherheitsverletzung vermieden
Enthält diese Seite aktiven Inhalte, der nicht nachweisbar sicher angezeigt werden kann. Zum Schutz des Computers dieses Inhalts kann nicht angezeigt werden.
Im folgenden ist eine Liste von Richtlinien, die Paul Johns Artikel entnommen werden "signieren und kennzeichnen ActiveX-Steuerelemente:"
  • Das Steuerelement wird nicht bearbeiten Dateisystem.
  • Des Steuerelements werden die Registrierung (außer zu registrieren, und heben Sie die Registrierung selbst) keine geändert.
  • Des Steuerelements nicht overindex Arrays oder anderweitig Speicher nicht ordnungsgemäß bearbeiten.
  • Das Steuerelement überprüft (und korrigiert) alle Eingaben, z. B. die Initialisierung, Methodenparameter, und Eigenschaft Satz an Funktionen.
  • Das Steuerelement wird nicht missbrauchen, alle Daten, die vom Benutzer bereitgestellt oder zu dieser Benutzer.
  • Das Steuerelement wurde getestet, in einer Vielzahl von Szenarien.
Weitere Informationen finden Sie auf folgender Website von Microsoft:
Signieren und Markieren von ActiveX-Steuerelementen
http://msdn2.Microsoft.com/en-us/library/ms974305.aspx
Wenn der Autor ein Steuerelements hat bestätigt, dass die oben genannten Kriterien erfüllt sind zusätzlich zu anderen, denen Sie sich vorstellen können, Sie sollten beide unterstützenIObjectSafetyund registrieren Ihr Steuerelement als die entsprechende Komponentenkategorien implementieren. Eine Liste der vor- und Nachteile der einzelnen Methoden finden Sie im entsprechenden Abschnitt in Paul Johns Artikel "signieren und kennzeichnen ActiveX-Steuerelementen."

Zum Kompilieren

Erstellen des Beispiels erforderlich ist, Microsoft Visual C++ 5.0 oder Microsoft Visual C++ 6.0. Nach dem Extrahieren der Dateien aus dem Archiv, laden Sie das Projekt Safectl.mdp in Microsoft Developer Studio, und erstellen Sie das Projekt. Als Teil des Buildprozesses, sollte das Steuerelement selbst registrieren.

Warnung, Bevor Sie das Beispiel mit zwei Präprozessorsymbole aufgeführt sind, die später in diesem Abschnitt ändern, müssen Sie das Steuerelement Registrierung aufheben, wenn es bereits erstellt oder wurde auf dem Computer registriert. Zu diesem Zweck führen Sie "regsvr32.exe" mit der/ u-Schalter für das Steuerelement. Sie können auch einen benutzerdefiniertes Tool Eintrag in Developer Studio hinzufügen, die für das aktuelle Projekt vornehmen, werden. Auf dieToolsKlicken Sie im MenüAnpassen, und klicken Sie dann auf dieToolsRegisterkarte, und erstellen Sie einen neuen Eintrag mit den folgenden Informationen:
                Name: &Un-register ActiveX Control
             Command: e:\Program Files\DevStudio\SharedIDE\BIN\REGSVR32.EXE
           Arguments: /u /v "$(TargetPath)"
   Initial Directory: $(TargetDir)
				
An dieser Stelle können Sie den Eintrag "Tools/Aufheben der Registrierung-ActiveX-Steuerelement" zum Aufheben der Registrierung des Steuerelements vor dem Hinzufügen oder der Beispiel-spezifische Präprozessor-Definitionen entfernen.

An das Steuerelement zu erstellen, damit er sich selbst als Implementierung der "sicher für Initialisierung" und der "sicher für Skripting" registriert Komponentenkategorien, gehen Sie folgendermaßen vor:
  1. Auf dieProjektKlicken Sie im MenüEinstellungen.
  2. Klicken Sie auf dieC++Registerkarte, und legen Sie dann die folgende Präprozessordefinition:
    L_USE_COMCAT
  3. Klicken Sie aufOKzum Schließen derEinstellungenim Dialogfeld und dann neu erstellen des Steuerelements.
Erstellen Sie das Steuerelement so, dass er stattdessen implementiertIObjectSafetyFühren Sie die vorherigen Schritte, aber ersetzen Sie L_USE_COMCAT mit L_IMPL_OBJECTSAFETY.

Ist auch beide Präprozessorsymbole definieren. Beachten Sie, dass diese Symbole für dieses Projekt spezifisch sind. Standardmäßig definiert die Buildeinstellungen des Projekts beide Präprozessorsymbole.

Zum Ausführen von

Nachdem das Beispielsteuerelement erstellt wurde und erfolgreich registriert wurde starten Sie Internet Explorer, und öffnen Sie die Seite Safectl.htm enthaltene Beispiel an.

Wenn das Steuerelement registriert sich selbst als sicher oder implementieren konfiguriert wurdeIObjectSafety, die Beschriftung Steuerelemente sollten lesen "Sicher für Initialisierung!" Wenn Sie auf das Steuerelement klicken, sollte die folgende Meldung:
Werden ich sicher für Skripting!
Wenn Internet Explorer Einstellung mit der höchsten Sicherheit festgelegt ist, das zugehörige Skript wird nicht ausgeführt, und die folgende Meldung:
Nicht sicher zur Initialisierung!


Hinweis:, Wenn Sie erstellen und Testen verschiedene Konfigurationen in diesem Beispiel Sie sicher stellen, dass Sie die Webseite im Browser aktualisieren. Wenn Sie nicht die Seite aktualisieren, verwenden Sie möglicherweise die zwischengespeicherte Version des Steuerelements statt des neuesten Builds.

Informationsquellen

Weitere Informationen zu den Sicherheits-APIs finden Sie unter dem Safety-API-Referenz in der ActiveX-SDK online-Dokumentation

Weitere Informationen zur Codesignatur finden Sie unter "Signierung mit Microsoft Authenticode-Technologie" in der ActiveX-SDK online-Dokumentation.

Weitere Informationen zum Component-Kategorien finden Sie unter das Thema "Component Kategorien" in der ActiveX-SDK online-Dokumentation.

Weitere Informationen über das Implementieren eines Component Object Model (COM) Schnittstelle in MFC, klicken Sie auf die folgende KB-Artikelnummer:
141277Gewusst wie: Überschreiben von eine Schnittstelle in einer MFC-Anwendung mit Visual C++
Ausführliche Informationen zum Entwickeln eines ActiveX-Steuerelements, und wie Sie es im Web bereitstellen finden Sie auf der folgenden Microsoft-Website:
Das ABC der MFC-ActiveX-Steuerelemente
http://msdn.Microsoft.com/en-us/library/ms968497.aspx
Hinweis Dies ist ein Artikel, der im Schnellverfahren direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden als Reaktion auf neue Probleme wie besehen bereitgestellt. Da dieser Artikel im Schnellverfahren erstellt wurde, kann er Tippfehler enthalten und zu einem späteren Zeitpunkt ohne vorherige Ankündigung überarbeitet werden. Weitere zu berücksichtigende Informationen finden Sie in den Nutzungsbedingungen.

Eigenschaften

Artikel-ID: 164119 - Geändert am: Montag, 12. Januar 2015 - Version: 1.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Keywords: 
kbnosurvey kbarchive kbdownload kbfile kbinfo kbsample kbmt KB164119 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 164119
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

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