Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Nach der Installation des kumulativen Sicherheitsupdates 974455 wird in Internet Explorer eine VBScript-Skriptfehlermeldung "Typenkonflikt" angezeigt

EINFÜHRUNG
Mit dem kumulativen Sicherheitsupdate für Internet Explorer 974455 (beschrieben in MS09-054) wurden zusätzliche "Typ"-Sicherheitsprüfungen in verschiedenen Methoden eingeführt, um erkannte Sicherheitsrisiken zu beseitigen. In bestimmten Szenarien können diese neuen Typsicherheitsprüfungen auf Webseiten, die VBScript oder eine Kombination aus VBScript und JavaScript verwenden, zu "Typenkonflikt"-Skriptfehlern führen.

Weitere Informationen zu MS09-054 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
974455MS09-054: Kumulatives Sicherheitsupdate für Internet Explorer
Problembeschreibung
Auf Webseiten, die VBScript als Skriptsprache auf der Clientseite sowie die Methoden showModalDialog() oder showModelessDialog() verwenden, tritt ein "Typenkonflikt"-Skriptfehler auf. Microsoft hat die folgenden drei Szenarien ermittelt, in denen möglicherweise ein "Typenkonflikt"-Skriptfehler generiert wird:
  • showModalDialog()
    Beim ersten Szenario wird ein Array()-Wert als Parameter an die Methode showModalDialog() in VBScript übergeben. Die Methode showModalDialog() unterstützt ein erforderliches Argument (sURL) sowie zwei optionale Argumente (vArguments und sFeatures). Der Parameter vArguments ist ein Parameter vom Typ VARIANT, der die zum Anzeigen des Dokuments verwendeten Argumente angibt. Wenn ein Entwickler beschließt, ein Array() direkt an den optionalen Parameter vArguments zu übergeben, tritt ein "Typenkonflikt"-Skriptfehler auf.

    Weitere Informationen zur Methode showModalDialog finden Sie auf folgender Microsoft MSDN-Webseite:
  • showModelessDialog()
    Beim zweiten Szenario wird ein Array()-Wert als Parameter an die Methode showModelessDialog() in VBScript übergeben. Die Methode showModelessDialog() unterstützt ein erforderliches Argument (sURL) sowie zwei optionale Argumente (vArguments und sFeatures). Der Parameter vArguments ist ein Parameter vom Typ VARIANT, der die zum Anzeigen des Dokuments verwendeten Argumente angibt. Wenn ein Entwickler beschließt, ein Array() direkt an den optionalen Parameter vArguments zu übergeben, tritt ein "Typenkonflikt"-Skriptfehler auf.

    Weitere Informationen zur Methode showModelessDialog finden Sie auf folgender Microsoft MSDN-Webseite:
  • returnValue
    Beim dritten Szenario wird die Eigenschaft returnValue eines modalen Dialogfelds explizit festgelegt. Die Eigenschaft returnValue ist eine Lese-/Schreibeigenschaft ohne Standardwert. Gemäß der Dokumentation in MSDN gilt die Eigenschaft returnValue nur für mit der Methode showModalDialog() erstellte Fenster. Wenn ein Entwickler beschließt, die Eigenschaft returnValue des modalen Dialogfelds auf einen Array()-Wert in VBScript festzulegen, tritt ein "Typenkonflikt"-Skriptfehler auf.

    Weitere Informationen zur Eigenschaft returnValue finden Sie auf folgender Microsoft MSDN-Webseite:
Aktuell hat Microsoft keine "Typenkonflikt"-Skriptfehler im Zusammenhang mit dem kumulativen Sicherheitsupdate 974455 auf Webseiten festgestellt, die JavaScript als einzige clientseitige Skriptsprache verwenden. Es scheinen nur Webseiten betroffen zu sein, auf denen die Methode showModalDialog(), die Methode showModelessDialog() oder die Eigenschaft returnValue in VBScript verwendet wird. Enthält die Webseite eine Kombination aus VBScript und JavaScript, ist sie möglicherweise betroffen, wenn die oben behandelten Methoden oder Eigenschaften in VBScript oder das Objekt VBArray verwendet werden. Die Verwendung des Objekts VBArray ist unüblich, und Szenarien mit VBArray werden in diesem Knowledge Base-Artikel nicht behandelt.
Ursache
Das kumulative Sicherheitsupdate für Internet Explorer MS09-054 wurde veröffentlicht, um erkannte Sicherheitsrisiken in Internet Explorer zu beheben. Als Teil des kumulativen Sicherheitsupdates wurden neue Prüfungen eingeführt, um ein unbeabsichtigtes Umwandeln von Parametern vom Typ VARIANT in gefährliche Datentypen in Internet Explorer zu verhindern. Die zusätzlichen Sicherheitsprüfungen führen zusätzliche Sicherheitsbeschränkungen für Parameter vom Typ VARIANT ein, die als Teil von benutzergesteuerten Variablen übergeben werden, um den Benutzer vor bestimmten Arten von Angriffen zu schützen. Diese zusätzlichen Prüfungen können legitime Browserszenarien, die VARIANT-Datentypen verwenden, beeinträchtigen.
Lösung
Um das Problem zu beheben, installieren Sie das Update 976749, nachdem Sie Sicherheitsupdate 974455 installiert haben. Weitere Informationen zu diesem Problem finden Sie im folgenden Artikel der Microsoft Knowledge Base:
976749Ein Update für Internet Explorer ist verfügbar, das Probleme behebt, die nach der Installation von Sicherheitsupdate 974455 (MS09-054) auftreten

Wichtig Installieren Sie Update 976749 nur, wenn Sie Sicherheitsupdate 974455 installiert haben. Wenn Sie Update 976749 installieren, ohne zuvor Sicherheitsupdate 974455 installiert zu haben, funktioniert Internet Explorer möglicherweise nicht ordnungsgemäß. In diesem Fall deinstallieren Sie Update 976749 wieder, installieren Sie Sicherheitsupdate 974455, und installieren Sie Update 976749 erneut.
Abhilfe
Es empfiehlt sich, das kumulative Sicherheitsupdate 974455 weiterhin anzuwenden und Update 976749 zu installieren, wenn die in diesem Artikel beschriebenen Symptome auftreten. Benutzer, die das kumulative Sicherheitsupdate entfernen, setzen ihre Systeme Risiken aus.

Für das erste und das zweite der im Abschnitt "Problembeschreibung" beschriebenen Szenarien können Sie eine Problemumgehung implementieren, wenn Sie das Sicherheitsupdate 974455 nicht installieren möchten. Zum Umgehen des Problems deklarieren Sie die Variable Array() explizit als VBScript-Variable. Arrays können ohne einen "Typenkonflikt"-Skriptfehler an die Methode showModalDialog() oder showModelessDialog() übergeben werden.

Das folgende VBScript verursacht z. B. einen "Typenkonflikt"-Skriptfehler.
// TYPENKONFLIKTvReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Das folgende VBScript übergibt ein Array an die Methode showModalDialog() oder showModelessDialog(), ohne einen "Typenkonflikt"-Skriptfehler zu verursachen.
// KEIN TYPENKONFLIKT-FEHLERDim myArraymyArray=Array(1,2,3,4,5,6,7)vReturn = window.showModalDialog("http://www.contoso.com", myArray)
Für das dritte, weiter oben behandelte Szenario können Sie eine Problemumgehung implementieren, wenn Sie das Sicherheitsupdate 974455 nicht installieren möchten. Um das Problem in Szenarien zu umgehen, bei denen ein eindimensionaler Array()-Wert an die Eigenschaft returnValue übergeben wird, verwenden Sie die VBScript-Funktionen Join und Split. Auf diese Weise können Sie Array()-Werte an die Eigenschaft returnValue übergeben.

Das folgende VBScript generiert z. B. einen "Typenkonflikt"-Skriptfehler.
// TYPENKONFLIKTDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Window.returnvalue = arrayItems
Mit den VBScript-Funktionen Join und Split können Sie die Eigenschaft returnValue festlegen, ohne einen "Typenkonflikt"-Skriptfehler zu generieren.
// KEIN TYPENKONFLIKT-FEHLERDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Dim arrString = Join(arrayItems, ";")Window.returnvalue = arrStringDim strTemp = window.showModalDialog(……)Dim arrayItems = Split(strTemp, ";")
Werden im dritten der oben behandelten Szenarien mehrdimensionale Array()-Werte oder Array()-Werte, die über Objekte verfügen, an die Eigenschaft returnValue übergeben, können Sie eine Problemumgehung implementieren, wenn Sie das Sicherheitsupdate 974455 nicht installieren möchten. Um das Problem in diesem Szenario zu umgehen, verwenden Sie eine JavaScript-Funktion, um die returnValue-Eigenschaft festzulegen. Diese JavaScript-Funktion ist für VBScript-Unterroutinen und -Funktionen verfügbar. Alle returnValue-Eigenschaftenwerte, die von einer JavaScript-Funktion festgelegt werden, sind für VBScript verfügbar.

Das folgende VBScript generiert z. B. einen "Typenkonflikt"-Skriptfehler.
// TYPENKONFLIKT<script LANGUAGE=vbscript>Option ExplicitSub Window_OnLoadDim abc(1,2,3)Window.ReturnValue = abcEnd Sub</script>
Indem Sie eine JavaScript-Funktion zusammen mit vorhandenem VBScript verwenden, können Sie die Eigenschaft returnValue festlegen, ohne einen "Typenkonflikt"-Skriptfehler zu generieren.
// KEIN TYPENKONFLIKT-FEHLER<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>
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Eigenschaften

Artikelnummer: 976949 – Letzte Überarbeitung: 12/01/2009 08:57:04 – Revision: 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
Feedback