SafeCtl.exe implementiert IObjectSafety in ActiveX-Steuerelement

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 164119 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Das SafeCtl.exe-Beispiel veranschaulicht, wie ein MFC-basierte ActiveX-Steuerelement an, wer den Code veröffentlicht geändert und gibt an, ob ein Steuerelement manipuliert wurde. Im Beispiel helfen festzustellen, ob das Steuerelement sicher für Skripting und sicher für Initialisierung.

Weitere Informationen

Die folgende Datei steht im Microsoft Download Center zum Download zur Verfügung:
SafeCtl.exe
Weitere Informationen zum Microsoft Support-Dateien herunterladen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
119591So erhalten Sie Dateien vom Microsoft Support im Internet
Microsoft hat 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, nicht autorisierte Änderungen an der Datei verhindert.

In Internet Explorer 3.0 und späteren Versionen können Benutzer Code in Form von ActiveX-Steuerelemente zu Ihren Webseiten hinzufügen. <object>Das <objekt>-Tag wird verwendet, um ein Steuerelement angeben. Nachdem eine Instanz des Steuerelements erstellt wurde, können seine Attribute über Persistence-Schnittstellen des Steuerelements festgelegt werden. Beispielsweise übergibt der Internet Explorer für jedes <param><object>-Tag, der Internet Explorer im Kontext eines Tags <objekt>, beim Analysieren einer HTML-Seite trifft, eine Eigenschaftensammlung über des entsprechenden Steuerelements IPersistPropertyBag -Schnittstelle. Darüber hinaus kann das Verhalten eines Steuerelements mithilfe der Skripts, die in die Seite eingebettet, die die Methoden ausführen, und ändern durch Automatisierungsschnittstelle für das Steuerelement verfügbar gemachten Eigenschaften angepasst werden.

Authenticode-Codesignierung Technologie ermöglicht es Endbenutzern zu erkennen, wer den Code veröffentlicht und um sicherzustellen, dass niemand mit diesem Code manipuliert hat, seit es signiert wurde. Dies garantiert nicht, dass der Code sicher ist, wenn dessen Eigenschaften mit nicht vertrauenswürdigen Werten initialisiert werden oder wenn seine Automatisierungsmodell durch nicht vertrauenswürdige Skripts gesteuert wird. Damit solche potenziellen Sicherheit hazards, die standardmäßigen Internet Explorer-Sicherheitseinstellungen, die über der Registerkarte Sicherheit im Internet Explorer- Optionen sind-Eigenschaft Blatt, erfordern, dass ein Steuerelement selbst registrieren als die entsprechende Komponentenkategorien implementieren oder, dass das Steuerelement die IObjectSafety -Schnittstelle implementieren. Das Beispiel veranschaulicht beide.

Bevor Sie die Eigenschaften eines Steuerelements in einer HTML-Seite eingebettet festgelegt, fragt Internet Explorer das Steuerelement IObjectSafety . Wenn unterstützt, Internet Explorer ruft dann die SetInterfaceSafetyOptions -Methode auf dieser Schnittstelle übergeben des Werts INTERFACESAFE_FOR_UNTRUSTED_DATA sowie der Interface Identifier (IID), der eine Persistenz-Schnittstelle. Auf HTML-Seiten noch heute, wo Eigenschaften in der Regel initialisiert werden, über die <param>-Tag ist die ID IID_IPersistPropertyBag. Die IID wird für Situationen bereitgestellt, wo Sie möglicherweise schützen möchten werden die Sicherheit auf einige Schnittstellen jedoch nicht anderen und in diesem Beispiel, das nicht wichtig ist. Die Beispielimplementierung überprüft sicherzustellen, dass die Schnittstelle unterstützt wird. Wenn das Steuerelement kann kein Schaden Clientsystem ungeachtet der Daten mit dem kann über die Persistenz-Schnittstelle initialisiert werden und die Dauerhaftigkeit-Schnittstelle wird unterstützt, des Steuerelements Implementierung von der IObjectSafety::SetInterfaceSafetyOptions -Methode sollte S_OK zurückgeben. Andernfalls sollte E_FAIL zurückgegeben werden.

Bevor alle Skripts, die auf der Seite ausgeführt werden eingebettet sind Internet Explorer ebenso ruft über des Steuerelements IObjectSafety:: SetInterfaceSafetyOptions -Methode, aber stattdessen übergibt den Wert INTERFACESAFE_FOR_UNTRUSTED_CALLER und die ID der einige scripting interface, ist i. d. r. IID_IDispatch. Das Steuerelement sollte entsprechend S_OK oder E_FAIL zurück.

Wenn das Steuerelement IObjectSafety nicht unterstützt, verwendet Internet Explorer den Komponente Kategorien-Manager, um anzuzeigen, wenn das Steuerelement "sicher für Initialisierung" Kategorie, CATID_SafeForInitializing und CATID_SafeForScripting, der "sicher für Skripting" Kategorie implementiert.

Wenn das Steuerelement unterstützt nicht die IObjectSafety und selbst wurde nicht registriert als die entsprechende Komponentenkategorien implementieren und die Internet Explorer-Sicherheitsstufe auf Hoch festgelegt ist, die Standardeinstellung, Internet Explorer wird nicht initialisiert die Eigenschaften des Steuerelements, noch führt er keine Skripts, die auf der Seite eingebettet sind. In diesem Szenario wird ein Dialogfeld, die den folgenden Text enthält, den Endbenutzern angezeigt:
Mögliche Sicherheitsverletzung vermieden
Diese Seite enthält aktiven Inhalt, der nicht überprüfbar anzuzeigenden sicher ist. Zum Schutz des Computers werden diese Inhalte nicht angezeigt.
Des folgt eine Liste von Richtlinien, die Paul Johns Artikel entnommen werden "signieren und kennzeichnen ActiveX-Steuerelemente:"
  • Das Steuerelement das Dateisystem nicht bearbeiten.
  • Das Steuerelement die Registrierung (außer zum Registrieren und selbst Aufheben der Registrierung) nicht bearbeiten.
  • Das Steuerelement nicht overindex Arrays oder anderweitig falsch bearbeiten Speicher.
  • Das Steuerelement überprüft (und korrigiert) alle Eingaben, einschließlich Initialisierung, die Parameter der Methode und Eigenschaft Set-Funktionen.
  • Das Steuerelement Missbrauch die Daten, das vom Benutzer bereitgestellt oder über die Benutzer, wurde.
  • Das Steuerelement wurde in einer Vielzahl von Szenarios getestet.
Weitere Informationen der folgenden Microsoft-Website:
Signieren und markieren ActiveX-Steuerelemente
http://msdn2.microsoft.com/en-us/library/ms974305.aspx
Wenn der Autor ein Steuerelements überprüft hat, dass die oben genannten Kriterien zusätzlich zu den anderen erfüllt wurden, die Sie vorstellen können, sollten Sie unterstützen beide IObjectSafety und registrieren Ihr Steuerelement als die entsprechende Komponentenkategorien implementieren. Eine Liste der vor- und Nachteile der einzelnen Methoden überprüfen Sie den entsprechenden Abschnitt in Paul Johns Artikel "Signieren und markieren ActiveX-Steuerelemente".

Zum Kompilieren

Erstellen das Beispiel erfordert Microsoft Visual C++ 5.0 oder Microsoft Visual C++ 6.0. Nach dem Extrahieren der Dateien aus dem Archiv geladen 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 das Beispiel wird mithilfe der beiden Präprozessor Symbole, die aufgelistet werden später in diesem Abschnitt ändern, müssen Sie das Steuerelement Registrierung aufheben, wenn es bereits erstellt oder auf dem Computer registriert wurde. Zu diesem Zweck führen Sie regsvr32.exe mit dem/u -Schalter für das Steuerelement. Sie können auch einen benutzerdefiniertes Tool-Eintrag in Developer Studio hinzufügen, die diese für das aktuelle Projekt. Menü Extras auf Anpassen klicken, und klicken Sie auf die Registerkarte Extras , und erstellen 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" verwenden, um das Steuerelement Registrierung aufheben, bevor Sie hinzufügen oder entfernen die Beispiel-spezifische Präprozessordefinitionen.

Das Steuerelement zu erstellen, so dass er selbst als Implementieren der "sicher für Initialisierung" und die "sicher für Skripting" registriert Komponentenkategorien, gehen Sie folgendermaßen vor:
  1. Klicken Sie im Menü Projekt auf Einstellungen .
  2. Klicken Sie auf die Registerkarte C++ , und definieren Sie dann die folgende Präprozessordefinition:
    L_USE_COMCAT
  3. Klicken Sie auf OK , um das Dialogfeld Einstellungen zu schließen, und anschließend erneutes Erstellen Sie des Steuerelements.
Um das Steuerelement zu erstellen, so dass er stattdessen IObjectSafety implementiert die vorherigen Schritte, sondern L_USE_COMCAT durch L_IMPL_OBJECTSAFETY ersetzen.

Außerdem ist es zulässig, beide Präprozessorsymbole definieren. Beachten Sie, dass diese Symbole für dieses Projekt spezifisch sind. Standardmäßig definieren die Buildeinstellungen des Projekts beide Präprozessorsymbole.

Zum Ausführen

Nachdem das Beispielsteuerelement erstellt wurde und erfolgreich registriert wurde, starten Sie Internet Explorer und öffnen Sie die Safectl.htm-Seite, die im Beispiel enthalten ist.

Wenn das Steuerelement zum registrieren sich selbst als Safe oder IObjectSafety implementieren konfiguriert wurde, sollten die Steuerelemente Beschriftung lesen "Sicher für Initialisierung!" Wenn Sie das Steuerelement klicken, sollten Sie die folgende Meldung:
Ich muss sicher für Skripting sein!
Wenn Internet Explorer auf die höchste Sicherheit Einstellung festgelegt ist, das zugehörige Skript nicht ausgeführt und die folgende Meldung:
NICHT sicher für Initialisierung!


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

Informationsquellen

Weitere Informationen über Sicherheit-APIs finden Sie in der Sicherheit API-Referenz in der online-ActiveX-SDK-Dokumentation.

Weitere Informationen über das Signieren von Code finden Sie unter "Signieren mit Microsoft Authenticode-Technologie" in der online-ActiveX-SDK-Dokumentation.

Weitere Informationen zu Komponenten Kategorien finden Sie "Komponente Kategorien" in der online-ActiveX-SDK-Dokumentation.

Weitere Informationen zum Implementieren einer Komponentenobjektmodells (COM) Schnittstelle in MFC, finden Sie die folgende KB-Artikelnummer:
141277Gewusst wie: eine Schnittstelle in einer MFC-Anwendung mithilfe von Visual C++ überschreiben
Ausführliche Informationen dazu, wie ein ActiveX-Steuerelement entwickeln und wie es im Web bereitstellen die folgende Microsoft-Website:
ABC von MFC-ActiveX-Steuerelementen
http://msdn.microsoft.com/en-us/library/ms968497.aspx

Eigenschaften

Artikel-ID: 164119 - Geändert am: Donnerstag, 26. April 2007 - Version: 5.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
Keywords: 
kbmt kbdownload kbfile kbinfo kbsample KB164119 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
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.

Ihr Feedback an uns

 

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