SafeCtl.exe implémente IObjectSafety dans le contrôle ActiveX

Traductions disponibles Traductions disponibles
Numéro d'article: 164119 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

L'exemple SafeCtl.exe montre comment modifier un contrôle ActiveX MFC pour indiquer qui a publié le code et indique si un contrôle a été falsifié. L'exemple peut vous aider à identifier si le contrôle est sécurisé pour l'écriture de scripts et pour l'initialisation.

Plus d'informations

Le fichier suivant est disponible au téléchargement à partir du centre de téléchargement Microsoft :
SafeCtl.exe
Pour plus d'informations sur la façon de télécharger des fichiers de support technique Microsoft, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
119591Comment faire pour obtenir des fichiers de prise en charge de Microsoft à partir de services en ligne
Microsoft a analysé ce fichier pour les virus. Microsoft utilisé les logiciels de détection de virus les plus récentes ne sont associé à la date à laquelle le fichier a été validé. Le fichier est stocké sur des serveurs sécurisés qui empêchent toute modification non autorisée dans le fichier.

Dans Internet Explorer 3.0 et versions ultérieures, les utilisateurs peuvent ajouter du code sous forme de contrôles ActiveX à leurs pages Web. La balise <object>permet de spécifier un contrôle. Après avoir créé une instance du contrôle, ses attributs peuvent être définis par l'intermédiaire d'interfaces de persistance du contrôle. Par exemple, pour chaque balise <param>Internet Explorer rencontre dans le contexte d'une balise <object>lors de l'analyse une page HTML, Internet Explorer transmet un sac de propriétés par le biais du contrôle correspondantInterface IPersistPropertyBag. En outre, il est possible de personnaliser le comportement d'un contrôle à l'aide de scripts incorporés dans la page qui exécutent les méthodes et de modifier les propriétés exposées par le biais de l'interface automation du contrôle.

Code Authenticode signature technologie permet aux utilisateurs finaux pour identifier qui a publié le code et vérifiez que personne n'a falsifié ce code depuis sa signature. Elle ne garantit pas que le code est sûr lorsque ses propriétés sont initialisées avec les valeurs non approuvés ou lorsque son modèle d'automation est piloté par les scripts non fiables. Pour éviter cette garantie potentielle dangers, les paramètres de sécurité de Internet Explorer par défaut qui sont accessibles via l'onglet sécurité Internet Explorer Options propriété de la feuille, exiger qu'un contrôle enregistrez lui-même comme mise en ?uvre les catégories de composant approprié ou que le contrôle implémente l'interface IObjectSafety. L'exemple illustre les deux.

Avant de définir les propriétés d'un contrôle incorporé dans une page HTML, Internet Explorer demande le contrôle IObjectSafety. Si la prise en charge, Internet Explorer appelle ensuite la SetInterfaceSafetyOptions méthode sur cette interface, en passant la valeur INTERFACESAFE_FOR_UNTRUSTED_DATA ainsi que l'identificateur d'interface (IID) d'une interface de persistance. Sur les pages HTML aujourd'hui, où les propriétés ont tendance à être initialisées via la balise <param>, l'IID est IID_IPersistPropertyBag. L'IID est fourni pour les situations où vous souhaitez pourriez être de protéger la sécurité sur certaines interfaces, mais pas sur d'autres utilisateurs et dans cet exemple n'est pas important. L'exemple d'implémentation vérifie que l'interface est prise en charge. Le contrôle peut faire aucun dommage pour le système du client, sans tenir compte des données avec lequel il peut être initialisé via cette interface de persistance et cette interface de persistance est pris en charge, mise en oeuvre du contrôle de laMéthode IObjectSafety::SetInterfaceSafetyOptions doit renvoyer S_OK. Dans le cas contraire, E_FAIL doit être retourné.

Avant d'autoriser tous les scripts incorporés dans la page à exécuter, Internet Explorer appelle de la même façon par le biais du contrôle IObjectSafety:: SetInterfaceSafetyOptions méthode mais au lieu de cela passe la valeur INTERFACESAFE_FOR_UNTRUSTED_CALLER et l'IID de quelques scripts d'interface, qui est généralement IID_IDispatch. Le contrôle doit renvoyer S_OK ou E_FAIL correctement.

Si le contrôle ne prend pas en charge IObjectSafety, Internet Explorer utilise le Gestionnaire de catégories de composant pour voir si le contrôle implémente la catégorie «sûrs pour l'initialisation», CATID_SafeForInitializing et la catégorie «sûrs pour l'écriture de scripts», CATID_SafeForScripting, respectivement.

Si le contrôle ne prend pas en charge IObjectSafety et se n'est pas inscrit comme mise en ?uvre les catégories de composant approprié, et si le niveau de sécurité Internet Explorer est défini sur élevé, la valeur par défaut, Internet Explorer risque de ne pas s'initialiser les propriétés du contrôle, ni exécutera tous les scripts incorporés dans la page. Dans ce scénario, les utilisateurs finaux s'afficher une boîte de dialogue qui contient le texte suivant :
Violation potentielle de sécurité évitée
Cette page contient un contenu actif qui n'est pas vérifiable sûr à afficher. Pour protéger votre ordinateur, ce contenu ne s'affiche.
Voici une liste des lignes directrices qui sont prises à partir de l'article Johns de le Paul, «signature et marque contrôles ActiveX:»
  • Le contrôle ne manipule pas le système de fichiers.
  • Le contrôle ne manipule pas le Registre (sauf pour inscrire et désinscrire lui-même).
  • Le contrôle ne pas overindex baies ou sinon manipuler mémoire incorrecte.
  • Le contrôle valide (et corrige) toutes les entrées, y compris l'initialisation, les paramètres de méthode et les fonctions de jeu de propriétés.
  • Le contrôle ne pas abuser de toutes les données fournie par l'utilisateur ou qui est à propos de cet utilisateur.
  • Le contrôle a été testé dans une variété de scénarios.
Pour plus d'informations, reportez-vous au site Web de Microsoft à l'adresse suivante :
Signature et marque les contrôles ActiveX
http://msdn2.microsoft.com/en-us/library/ms974305.aspx
Si un auteur de contrôle a vérifié que les critères ci-dessus sont remplies à d'autres qui, selon eux de, ils tenez prenant en charge les deux IObjectSafety et enregistrer leur contrôle en tant que mise en ?uvre les catégories de composant approprié. Pour obtenir la liste des avantages et inconvénients de chacune de ces méthodes, consultez la section correspondante dans article Johns de le Paul, «Signature et marque les contrôles ActiveX».

Pour compiler

Création de l'exemple nécessite Microsoft Visual C++ 5.0 ou Microsoft Visual C++ 6.0. Après avoir extrait les fichiers à partir de l'archive, chargez le projet Safectl.mdp dans Microsoft Developer Studio et générez le projet. Dans le cadre du processus de génération, le contrôle doit inscrire lui-même.

Avertissement Avant de modifier l'échantillon en utilisant les symboles de préprocesseur deux répertoriés plus loin dans cette section, vous devez annuler l'inscription du contrôle si a déjà été créé ou enregistré sur l'ordinateur. Pour ce faire, exécutez regsvr32.exe avec le commutateur /u pour votre contrôle. Vous pouvez également ajouter une entrée de l'outil personnalisé dans Developer Studio fera pour le projet en cours. Dans le menu Outils, cliquez sur Personnaliser, puis sur l'onglet Outils. créer une nouvelle entrée avec les informations suivantes :
                Name: &Un-register ActiveX Control
             Command: e:\Program Files\DevStudio\SharedIDE\BIN\REGSVR32.EXE
           Arguments: /u /v "$(TargetPath)"
   Initial Directory: $(TargetDir)
				
à ce stade, vous pouvez utiliser l'entrée "outils/désinscrire contrôle ActiveX" pour annuler l'inscription de votre contrôle avant d'ajouter ou supprimer les définitions de préprocesseur exemple spécifiques.

Pour créer le contrôle afin qu'elle s'inscrit comme mise en ?uvre la «sûrs pour l'initialisation» et le «sûrs pour l'écriture de scripts «catégories de composants, procédez comme suit :
  1. Dans le menu projet, cliquez sur paramètres.
  2. Cliquez sur l'onglet C++ et définissez ensuite la définition de préprocesseur suivante :
    L_USE_COMCAT
  3. Cliquez sur OK pour fermer la boîte de dialogue paramètres, puis puis régénérez le contrôle.
Pour créer le contrôle afin qu'il implémente à la place IObjectSafety, suivez la procédure précédente en remplaçant L_USE_COMCAT par L_IMPL_OBJECTSAFETY.

Il est également valide pour définir les deux symboles de préprocesseur. Remarquez que ces symboles sont spécifiques à ce projet. Par défaut, les paramètres de génération du projet définissent les deux symboles de préprocesseur.

Pour exécuter

Une fois l'exemple de contrôle a été généré et a été correctement enregistrée, démarrez Internet Explorer, puis ouvrez la page Safectl.htm, qui est incluse dans l'exemple.

Si le contrôle a été configuré pour s'inscrire comme sécurisés ou implémenter IObjectSafety, la légende de contrôles à lire «Safe pour l'initialisation!» Lorsque vous cliquez sur le contrôle, vous devez le message suivant :
Je must être sûr pour l'écriture de scripts !
Si Internet Explorer est définie à son paramètre de sécurité plus élevé, le script associé ne s'exécute pas et le message d'erreur suivant :
NOT sûrs pour l'initialisation !


Remarque Si vous générez et tester différentes configurations de cet exemple, assurez-vous que vous actualisez la page Web dans le navigateur. Si vous n'actualisez pas la page, vous utilisiez la version mise en cache du contrôle au lieu de la dernière version.

Références

Pour plus d'informations sur les API de sécurité, consultez la sécurité de référence sur l'API dans la documentation en ligne du Kit de développement ActiveX SDK.

Pour plus d'informations sur la signature de code, consultez «Signature avec Microsoft Authenticode Technology» dans la documentation en ligne Kit de développement ActiveX SDK.

Pour plus d'informations sur les catégories de composants, consultez la rubrique «Catégories de composants» dans la documentation en ligne du Kit de développement ActiveX SDK.

Pour plus d'informations sur l'implémentation COM (Component Object Model) de l'interface dans MFC, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
141277Comment substituer une interface dans une application MFC à l'aide de Visual C++
Pour des informations détaillées sur la façon de développer un contrôle ActiveX et comment le déployer sur le Web, reportez-vous au site Web de Microsoft à l'adresse suivante :
L'ABC de contrôles ActiveX MFC
http://msdn.microsoft.com/en-us/library/ms968497.aspx

Propriétés

Numéro d'article: 164119 - Dernière mise à jour: jeudi 26 avril 2007 - Version: 5.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 4.0 Édition 128 bits
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual C++ 5.0 Édition Entreprise
  • Microsoft Visual C++ 5.0 Édition Professionnelle
  • Microsoft Visual C++ 6.0 Édition Entreprise
  • Microsoft Visual C++ 6.0 Édition Professionnelle
Mots-clés : 
kbmt kbdownload kbfile kbinfo kbsample KB164119 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 164119
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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