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

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

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 :
    http://msdn.microsoft.com/fr-fr/library/ms536759(VS.85).aspx
  • 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 :
    http://msdn.microsoft.com/en-us/library/ms536761(VS.85).aspx/PathLink>
  • 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 :
    http://msdn.microsoft.com/fr-fr/library/ms534371(VS.85).aspx
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 TYPE
vReturn = 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 TYPE
Dim myArray
myArray=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 TYPE
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.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 TYPE
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3

Dim arrString = Join(arrayItems, ";")
Window.returnvalue = arrString
Dim 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 Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End 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 Explicit

Sub Window_OnLoad
setReturnValue()
msgbox window.returnValue
End 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

Numéro d'article: 976949 - Dernière mise à jour: mardi 1 décembre 2009 - Version: 3.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Windows Internet Explorer 8 sur le système suivant
    • Windows Server 2008 Datacenter without Hyper-V
    • Windows Server 2008 Enterprise without Hyper-V
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Standard without Hyper-V
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
    • Windows Server 2008 R2 Datacenter
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Standard
    • Windows Web Server 2008 R2
    • Windows 7 Entreprise
    • Windows 7 Édition Familiale Basique
    • Windows 7 Édition Familiale Premium
    • Windows 7 Professionnel
    • Windows 7 Édition Integrale
    • Windows Vista Professionnel
    • Windows Vista Entreprise
    • Windows Vista Édition Familiale Basique
    • Windows Vista Édition Familiale Premium
    • Windows Vista Édition Intégrale
    • Windows Vista Entreprise 64 bits
    • Windows Vista Édition Familiale Basique 64 bits
    • Windows Vista Édition Familiale Premium 64 bits
    • Windows Vista Édition Intégrale 64 bits
    • Windows Vista Professionnel 64 bits
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Édition familiale
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Windows Internet Explorer 7 sur le système suivant
    • Windows Server 2008 Datacenter without Hyper-V
    • Windows Server 2008 Enterprise without Hyper-V
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Standard without Hyper-V
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
    • Windows Server 2008 R2 Datacenter
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Standard
    • Windows Web Server 2008 R2
    • Windows 7 Entreprise
    • Windows 7 Édition Familiale Basique
    • Windows 7 Édition Familiale Premium
    • Windows 7 Professionnel
    • Windows 7 Édition Integrale
    • Windows Vista Professionnel
    • Windows Vista Entreprise
    • Windows Vista Édition Familiale Basique
    • Windows Vista Édition Familiale Premium
    • Windows Vista Édition Intégrale
    • Windows Vista Entreprise 64 bits
    • Windows Vista Édition Familiale Basique 64 bits
    • Windows Vista Édition Familiale Premium 64 bits
    • Windows Vista Édition Intégrale 64 bits
    • Windows Vista Professionnel 64 bits
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Édition familiale
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Internet Explorer 6.0 sur le système suivant
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Édition familiale
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Internet Explorer 6.0 SP1 sur le système suivant
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professionnel
    • Microsoft Windows 2000 Server
  • Microsoft Internet Explorer 5.01 Service Pack 4 sur le système suivant
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professionnel
    • Microsoft Windows 2000 Server
Mots-clés : 
kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949
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