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

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

164119
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Résumé
SafeCtl.exe l'exemple montre comment modifier un contrôle ActiveX en fonction des MFC pour indiquer qui a publié le code et indique si un contrôle a été falsifié. L'exemple peut vous aider à déterminer si le contrôle est sécurisé pour le script et pour l'initialisation.
Plus d'informations
Le fichier suivant est disponible en téléchargement à partir du centre de téléchargement Microsoft :
Pour plus d'informations sur la façon de télécharger des fichiers de prise en charge de Microsoft, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
119591Comment faire pour obtenir les fichiers de prise en charge de Microsoft à partir des services en ligne
Microsoft a analysé ce fichier pour les virus. Microsoft a utilisé les logiciels de détection de virus plus récents qui ne sont associé à la date à laquelle le fichier a été validé. Le fichier est stocké sur des serveurs sécurisés qui permettent d'éviter toute modification non autorisée dans le fichier.

Dans Internet Explorer 3.0 et versions ultérieures, les utilisateurs peuvent ajouter du code dans le formulaire des contrôles ActiveX vers leurs pages Web. La balise <object>est utilisée pour spécifier un contrôle. Après la création d'une instance du contrôle, ses attributs peuvent être définies par l'intermédiaire d'interfaces de persistance du contrôle. Par exemple, pour chaque balise <param>que Internet Explorer rencontre dans le contexte d'une balise <object>lors de l'analyse d'une page HTML, Internet Explorer transmet un sac de propriétés via le contrôle correspondantIPersistPropertyBaginterface . En outre, le comportement d'un contrôle peut être personnalisé à l'aide de scripts incorporés dans la page et qui exécutent les méthodes et de modifier les propriétés exposées via l'interface d'automation du contrôle.

Signature de la technologie du code Authenticode permet aux utilisateurs pour identifier qui a publié le code et vérifiez que personne n'a falsifié ce code dans la mesure où il a été signé. Elle ne garantit pas que le code est sûr lorsque ses propriétés sont initialisées avec des valeurs non fiables ou lorsque son modèle d'automation est piloté par les scripts non fiables. Pour éviter ce type de sécurité potentielle dangers les paramètres de sécurité de Internet Explorer par défaut qui sont accessibles via leSécuritéonglet d'Internet ExplorerOptionspropriété de la feuille, nécessitent qu'un contrôle de s'inscrire en tant que la mise en œuvre les catégories de composant appropriée ou que le contrôle implémente leIObjectSafetyinterface . L'exemple illustre les deux.

Avant de définir les propriétés d'un contrôle incorporé dans une page HTML, Internet Explorer interroge le contrôle pourIObjectSafety. Si la prise en charge, Internet Explorer appelle alors laSetInterfaceSafetyOptionsméthode sur cette interface, en passant la valeur INTERFACESAFE_FOR_UNTRUSTED_DATA ainsi que l'identificateur d'interface (IID) d'une interface de persistance. Dans les pages HTML l'heure actuelle, 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 pourriez être de protéger la sécurité sur des interfaces, mais pas sur d'autres et dans cet exemple n'est pas important. L'exemple d'implémentation vérifie pour vous assurer que l'interface est prise en charge. Si le contrôle ne peut n'aucun compromettre la sécurité système du client, le, quel que soit les données avec laquelle il peut être initialisé par le biais de cette interface de persistance, et cette interface de persistance est pris en charge, implémentation du contrôle de laIObjectSafety::SetInterfaceSafetyOptionsméthode doit renvoyer S_OK. Dans le cas contraire, E_FAIL doit être retourné.

Avant d'autoriser des scripts qui sont incorporés dans la page à être exécuté, Internet Explorer appelle de même à travers le contrôleIObjectSafety:: SetInterfaceSafetyOptionsmé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 retourner E_FAIL ou de S_OK correctement.

Si le contrôle ne prend pas en chargeIObjectSafety, 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 chargeIObjectSafetyet n'a pas été enregistré en tant que la mise en œuvre les catégories de composant approprié et si le niveau de sécurité Internet Explorer est défini sur haut, la valeur par défaut, Internet Explorer ne s'initialisera pas les propriétés du contrôle, ni s'il exécute des 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 en toute sécurité à afficher. Pour protéger votre ordinateur, à ce contenu n'est pas affiché.
Voici une liste d'instructions qui sont issus de l'article de Paul Johns, «signature et marque les 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 annuler l'enregistrement lui-même).
  • Le contrôle ne pas overindex des tableaux ou sinon manipuler mémoire incorrecte.
  • Le contrôle valide (et corrige les) sur toutes les entrées, y compris l'initialisation, les paramètres de méthode et les fonctions de jeu de propriété.
  • Le contrôle ne pas abuser de toutes les données qui est fourni 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, visitez le site Web Microsoft suivant :
La signature et marque des contrôles ActiveX
http://msdn2.Microsoft.com/en-us/library/ms974305.aspx
Si l'auteur d'un contrôle a vérifié que les critères ci-dessus sont remplies à d'autres elles peuvent être considéré, ils doivent prendre en compte prenant en charge les deuxIObjectSafetyet en enregistrant leur contrôle en tant que la mise en œuvre les catégories de composant approprié. Pour obtenir une liste des avantages et inconvénients de chacune de ces méthodes, consultez la section correspondante dans l'article de Paul Johns, «signature et marque ActiveX Controls».

Pour compiler

Génération 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, charger le projet Safectl.mdp dans Microsoft Developer Studio et générer le projet. Dans le cadre du processus de génération, le contrôle doit s'inscrire.

AvertissementAvant de modifier l'exemple à l'aide de deux symboles de préprocesseur qui sont répertoriées plus loin dans cette section, vous devez annuler l'inscription du contrôle s'il a déjà été créé ou enregistré sur l'ordinateur. Pour ce faire, exécutez regsvr32.exe avec le/ucommutateur pour votre contrôle. Vous pouvez également ajouter une entrée de l'outil personnalisé dans Developer Studio, qui va le faire pour le projet actuel. Sur laOutilsmenu, cliquez surPersonnaliser, puis cliquez sur leOutilsonglet. 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 ActiveX Control" pour annuler l'inscription de votre contrôle avant d'ajouter ou supprimer les définitions de préprocesseur spécifiques à l'exemple.

Pour générer le contrôle afin qu'elle s'inscrit comme la mise en œuvre les «sûrs pour l'initialisation» et le «sécurisés pour le script «catégories de composants, procédez comme suit :
  1. Sur leProjetmenu, cliquez surParamètres.
  2. Cliquez sur leC++onglet et définissez ensuite la définition de préprocesseur suivante :
    L_USE_COMCAT
  3. Cliquez surOKpour fermer leParamètresboîte de dialogue et puis reconstruction du contrôle.
Pour créer le contrôle afin qu'il implémente à la placeIObjectSafetysuivez les étapes précédentes, mais remplacez L_USE_COMCAT avec L_IMPL_OBJECTSAFETY.

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

Pour exécuter

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

Si le contrôle a été configuré pour s'inscrire comme étant fiable ou de mettre en œuvreIObjectSafety, lisez la légende du contrôle» "sans échec d'initialisation ! Lorsque vous cliquez sur le contrôle, vous devez recevoir le message suivant :
I doit être sécurisé pour les scripts!
Si Internet Explorer est configuré pour son paramètre de sécurité plus élevé, le script associé ne s'exécute pas et le message d'erreur suivant :
Non sûr pour l'initialisation!


RemarqueSi vous génération et test des 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 pouvez utiliser la version en cache du contrôle à la place de la dernière génération.
Références
Pour plus d'informations sur les API de sécurité, reportez-vous à la sécurité la référence des API de la documentation en ligne Kit de développement ActiveX SDK.

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

Pour plus d'informations sur les catégories de composants, voir la rubrique «catégories de composants» dans la documentation en ligne 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, visitez le site Web Microsoft suivant :
SAFE SafeCtl de sécurité
Remarque Il s'agit d'un article de « PUBLICATION RAPIDE » rédigé directement au sein du service de support technique Microsoft. Les informations qui y sont contenues sont fournies en l'état, en réponse à des problèmes émergents. En raison du délai rapide de mise à disposition, les informations peuvent contenir des erreurs typographiques et, à tout moment et sans préavis, faire l'objet de révisions. Pour d'autres considérations, consultez les Conditions d'utilisation.

Avertissement : Cet article a été traduit de manière automatique

Propriétés

ID d'article : 164119 - Dernière mise à jour : 01/12/2015 15:55:21 - Révision : 2.0

  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual C++ 5.0 Édition Entreprise
  • Microsoft Visual C++ 5.0 Édition Professionnelle
  • kbnosurvey kbarchive kbdownload kbfile kbinfo kbsample kbmt KB164119 KbMtfr
Commentaires