Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Un message d'erreur de script VBScript « Incompatibilité de type » s'affiche dans Internet Explorer après que vous avez installé la mise à jour de sécurité cumulative 974455

INTRODUCTION
La mise à jour de sécurité cumulative 974455 pour Internet Explorer (décrite dans MS09-054) a introduit des vérifications de sécurité « Type » dans plusieurs méthodes pour résoudre les vulnérabilités identifiées en terme de sécurité. Dans certains cas, ces nouveaux types de vérifications de sécurité peuvent engendrer des erreurs de script « Incompatibilité de type » dans les pages Web qui utilisent VBScript ou dans les pages Web qui utilisent un mélange de VBScript et de JavaScript.

Pour plus d'informations sur MS09-054, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
974455 MS09-054 : Mise à jour de sécurité cumulative pour Internet Explorer
Symptômes
Les pages Web qui utilisent VBScript comme langage de script côté client et qui utilisent les méthodes showModalDialog() ou showModelessDialog() peuvent rencontrer une erreur de script « Incompatibilité de type ». Microsoft a identifié les trois scénarios suivants dans lesquels une erreur de script « Incompatibilité de type » peut être générée :
  • showModalDialog()
    Le premier scénario implique de passer une valeur Array() en tant que paramètre vers la méthode showModalDialog() dans VBScript. La méthode showModalDialog() prend en charge un argument requis (sURL) et deux arguments optionnels (vArguments et sFeatures). Le paramètre vArguments est un paramètre type VARIANT qui spécifie les arguments à utiliser lors de l'affichage du document. Si un développeur décide de passer directement un Array() vers le paramètre optionnel vArguments, une erreur de script « Incompatibilité de type » se produira.

    Pour plus d'informations sur la méthode showModalDialog, consultez la page Web Microsoft MSDN suivante :
  • showModelessDialog()
    Le deuxième scénario implique de passer une valeur Array() en tant que paramètre vers la méthode showModelessDialog() dans VBScript. La méthode showModelessDialog() prend en charge un argument requis (sURL) et deux arguments optionnels (vArguments et sFeatures). Le paramètre vArguments est un paramètre type VARIANT qui spécifie les arguments à utiliser lors de l'affichage du document. Si un développeur décide de passer directement un Array() vers le paramètre optionnel vArguments, une erreur de script « Incompatibilité de type » se produira.

    Pour plus d'informations sur la méthode showModelessDialog, consultez la page Web Microsoft MSDN suivante :
  • returnValue
    Le troisième scénario implique la configuration explicite de la propriété returnValue d'une fenêtre de dialogue modale. La propriété returnValue est une propriété lecture/écriture qui n'a pas de valeur par défaut. Selon la documentation sur MSDN, la propriété returnValue s'applique uniquement aux fenêtres créées avec la méthode showModalDialog(). Si un développeur décide de configurer explicitement la propriété returnValue d'une fenêtre de dialogue modale avec une valeur Array() dans VBScript, une erreur de script « Incompatibilité de type » se produira.

    Pour plus d'informations sur la propriété return Value, consultez la page Web Microsoft MSDN suivante :
Actuellement, Microsoft n'a pas observé d'erreurs de script « Incompatibilité de type » engendrées par la mise à jour de sécurité cumulative 974455 dans les pages Web qui utilisent JavaScript comme seul langage de script côté client. Seules les pages Web qui utilisent la méthode showModalDialog(), la méthode showModelessDialog() ou la propriété returnValue dans VBScript semblent être affectées. Si la page Web contient un mélange de VBScript et de JavaScript, elle peut être affectée si elle utilise les méthodes ou les propriétés abordées plus haut dans VBScript ou si elle utilise l'objet VBArray. L'utilisation de l'objet VBArray est inhabituelle et les scénarios qui impliquent VBArray ne sont pas couverts par cet article de la Base de connaissances.
Cause
La mise à jour de sécurité cumulative pour Internet Explorer MS09-054 a été publiée pour résoudre les vulnérabilités identifiées en terme de sécurité dans Internet Explorer. Dans le cadre de la mise à jour de sécurité cumulative, Internet Explorer a introduit de nouvelles vérifications des casts non voulus des paramètres type VARIANT dans les types de données dangereuses. D'autres vérifications de sécurité imposent d'autres contraintes de sécurité pour les paramètres de type VARIANT qui sont passés dans le cadre de variables contrôlées par l'utilisateur pour le protéger de certaines attaques. Ces vérifications supplémentaires peuvent affecter des scénarios de navigation légitimes qui utilisent des types de données VARIANT.
Résolution
Pour résoudre ce problème, installez la mise à jour 976749 après avoir installé la mise à jour de sécurité 974455. Pour plus d'informations sur ce problème, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
976749 Une mise à jour est disponible pour Internet Explorer ; elle résout des problèmes qui surviennent lorsque vous appliquez la mise à jour de sécurité 974455 (MS09-054)

Important N'installez pas la mise à jour 976749 si vous n'avez pas installé la mise à jour de sécurité 974455. Si vous installez la mise à jour 976749 sans avoir préalablement installé la mise à jour de sécurité 974455, il est possible qu'Internet Explorer ne fonctionne pas correctement. Si cela se produit, désinstallez la mise à jour 976749, installez la mise à jour de sécurité 974455, puis réinstallez la mise à jour 976749.
Contournement
Nous vous conseillons de continuer d'appliquer la mise à jour de sécurité cumulative 974455 et d'installer la mise à jour 976749 si les symptômes décrits dans cet article se manifestent. Les clients qui décident de supprimer la mise à jour de sécurité cumulative exposent leur système aux dangers.

En ce qui concerne le premier scénario et le deuxième scénario expliqués dans la section « Symptômes », vous pouvez appliquer une solution de contournement si vous ne voulez pas installer la mise à jour de sécurité 974455. Pour contourner ce problème, déterminez de manière explicite la variable Array() dans une variable VBScript. Les tableaux peuvent être passés vers les méthodes showModalDialog() ou showModelessDialog() sans erreur de script « Incompatibilité de type ».

Par exemple, le VBScript suivant engendrera une erreur de script « Incompatibilité de type ».
// INCOMPATIBILITÉ DE TYPEvReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Le VBScript suivant passera un tableau vers les méthodes showModalDialog() ou showModelessDialog() sans erreur de script « Incompatibilité de type ».
// PAS D'ERREUR INCOMPATIBILITÉ DE TYPEDim myArraymyArray=Array(1,2,3,4,5,6,7)vReturn = window.showModalDialog("http://www.contoso.com", myArray)
En ce qui concerne le troisième scénario dont nous avons parlé plus haut, vous pouvez appliquer une solution de contournement si vous ne voulez pas installer la mise à jour de sécurité 974455. Pour contourner le problème dans les scénarios dans lesquels une seule section Array() est passée vers la propriété returnValue, utilisez les fonctions Joindre et Fractionner VBScript. Cela vous permet de passer les valeurs Array() vers la propriété returnValue.

Par exemple, le VBScript suivant engendre une erreur de script « Incompatibilité de type ».
// INCOMPATIBILITÉ DE TYPEDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Window.returnvalue = arrayItems
Lorsque vous utilisez les fonctions Joindre et Fractionner VBScript, vous pouvez configurer la propriété returnValue sans générer d'erreur de script « Incompatibilité de type ».
// PAS D'ERREUR INCOMPATIBILITÉ DE TYPEDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Dim arrString = Join(arrayItems, ";")Window.returnvalue = arrStringDim strTemp = window.showModalDialog(……)Dim arrString = Join(arrayItems, ";")
En ce qui concerne le troisième scénario dont nous avons parlé plus haut, dans lequel les valeurs multidimensionnelles Array() ou les valeurs Array() qui présentent des objets sont passées à la propriété returnValue, vous pouvez appliquer une solution de contournement si vous ne voulez pas installer la mise à jour de sécurité 974455. Pour contourner le problème présenté dans ce scénario, vous pouvez utiliser une fonction JavaScript pour définir la propriété returnValue. Cette fonction JavaScript est disponible pour les sous-routines et les fonctions VBScript. Chaque valeur de propriété returnValue configurée par une fonction JavaScript sera disponible pour VBScript.

Par exemple, le VBScript suivant engendre une erreur de script « Incompatibilité de type ».
// INCOMPATIBILITÉ DE TYPE<script LANGUAGE=vbscript>Option ExplicitSub Window_OnLoadDim abc(1,2,3)Window.ReturnValue = abcEnd Sub</script>
L'utilisation d'une fonction JavaScript avec un VBScript existant vous permet de configurer la propriété returnValue sans générer d'erreur de script « Incompatibilité de type ».
// PAS D'ERREUR INCOMPATIBILITÉ DE TYPE<script Language=JavaScript>function setReturnValue(){var returnValueArray= new Array();returnValueArray[0] = 1;returnValueArray[1] = 2;returnValueArray[2] = 3;window.returnValue = returnValueArray;}</script><script LANGUAGE=vbscript??Option ExplicitSub Window_OnLoadsetReturnValue()msgbox window.returnValueEnd Sub</script>
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Propriétés

ID d'article : 976949 - Dernière mise à jour : 12/01/2009 10:15:23 - Révision : 3.1

Windows Internet Explorer 8, Windows Internet Explorer 7, Microsoft Internet Explorer 6.0, Microsoft Internet Explorer 6.0 SP1, Microsoft Internet Explorer 5.01 Service Pack 4

  • kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949
Commentaires
t();