Po instalaci kumulativní aktualizace zabezpečení 974455 se v aplikaci Internet Explorer zobrazuje chybová zpráva skriptu jazyka VBScript s textem Nesoulad typů

Překlady článku Překlady článku
ID článku: 976949 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

ÚVOD

Kumulativní aktualizace zabezpečení pro aplikaci Internet Explorer 974455 (popsaná v bulletinu MS09-054) zavedla do různých metod další bezpečnostní kontroly typů s cílem vyřešit zjištěné chyby zabezpečení. V určitých situacích mohou tyto nové bezpečnostní kontroly typů způsobit u webových stránek využívajících jazyk VBScript nebo kombinaci jazyků VBScript a JavaScript zobrazení chyb skriptů Neshoda typů.

Další informace o bulletinu MS09-054 naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
974455 MS09-054: Kumulativní aktualizace zabezpečení pro aplikaci Internet Explorer

Příznaky

U webových stránek, které využívají jazyk VBScript jako skriptovací jazyk na straně klienta a které používají metody showModalDialog() nebo showModelessDialog(), může dojít k chybě skriptu Neshoda typů. Společnost Microsoft určila následující tři scénáře, v nichž může dojít k chybě skriptu Neshoda typů:
  • showModalDialog()
    V prvním scénáři je metodě showModalDialog() v jazyku VBScript předána jako parametr hodnota Array(). Metoda showModalDialog() podporuje jeden povinný argument (sURL) a dva nepovinné argumenty (vArguments a sFeatures). Parametr vArguments je typu VARIANT a určuje argumenty, které mají být použity při zobrazení dokumentu. Pokud se vývojář rozhodne předat parametr Array() přímo volitelnému parametru vArguments, dojde k chybě skriptu Neshoda typů.

    Další informace o metodě showModalDialog naleznete na následující webové stránce služby MSDN společnosti Microsoft:
    http://msdn.microsoft.com/cs-cz/library/ms536759(VS.85).aspx
  • showModelessDialog()
    Ve druhém scénáři je metodě showModelessDialog() v jazyku VBScript předána jako parametr hodnota Array(). Metoda showModelessDialog() podporuje jeden povinný argument (sURL) a dva nepovinné argumenty (vArguments a sFeatures). Parametr vArguments je typu VARIANT a určuje argumenty, které mají být použity při zobrazení dokumentu. Pokud se vývojář rozhodne předat parametr Array() přímo volitelnému parametru vArguments, dojde k chybě skriptu Neshoda typů.

    Další informace o metodě showModelessDialog naleznete na následující webové stránce služby MSDN společnosti Microsoft:
    http://msdn.microsoft.com/en-us/library/ms536761(VS.85).aspx/PathLink>
  • returnValue
    Ve třetím scénáři je explicitně nastavena vlastnost returnValue modálního dialogového okna. Vlastnost returnValue je vlastnost pro čtení a zápis, která nemá žádnou výchozí hodnotu. Podle dokumentace dostupné v rámci služby MSDN se vlastnost returnValue vztahuje pouze na okna vytvořená pomocí metody showModalDialog(). Pokud se vývojář rozhodne explicitně nastavit v jazyku VBScript vlastnost returnValue modálního dialogového okna na hodnotu Array(), dojde k chybě skriptu Neshoda typů.

    Další informace o vlastnosti returnValue naleznete na následující webové stránce služby MSDN společnosti Microsoft:
    http://msdn.microsoft.com/cs-cz/library/ms534371(VS.85).aspx
Společnost Microsoft v poslední době nepozorovala na webových stránkách, které používají jazyk JavaScript jako jediný skriptovací jazyk na straně klienta, žádné chyby skriptů Neshoda typů, které by byly důsledkem kumulativní aktualizace zabezpečení 974455. Zdá se, že ovlivněny jsou pouze webové stránky, které v rámci jazyka VBScript používají metodu showModalDialog(), metodu showModelessDialog() nebo vlastnost returnValue. Pokud webová stránka obsahuje jazyky VBScript i JavaScript, může k těmto chybám docházet, pokud v rámci jazyka VBScript používá metody nebo vlastnosti uvedené dříve nebo pokud používá objekt VBArray. Použití objektu VBArray není obvyklé a scénáře zahrnující objekt VBArray nebudou v tomto článku znalostní báze Knowledge Base popsány.

Příčina

Byla vydána kumulativní aktualizace zabezpečení MS09-054, která řeší zjištěné chyby zabezpečení v aplikaci Internet Explorer. Jako součást této kumulativní aktualizace zabezpečení aplikace Internet Explorer zavedla nové kontroly zaměřené na neúmyslné přetypování parametrů typu VARIANT na nebezpečné datové typy. Tyto další bezpečnostní kontroly dále omezí parametry typu VARIANT, které jsou předávány jako součást proměnných řízených uživatelem s cílem chránit uživatele před určitými typy útoků. Mohou ovlivnit legitimní scénáře procházení, které využívají datové typy VARIANT.

Řešení

Chcete-li tyto potíže vyřešit, po dokončení instalace aktualizace zabezpečení 974455 nainstalujte aktualizaci 976749. Další informace o tomto problému naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
976749 Pro aplikaci Internet Explorer je k dispozici aktualizace, která řeší potíže, k nimž dochází po instalaci aktualizace zabezpečení 974455 (MS09-054)

Důležité: Pokud jste nenainstalovali aktualizaci zabezpečení 974455, neinstalujte aktualizaci 976749. Pokud ji nainstalujete, aniž byste nejdříve nainstalovali aktualizaci zabezpečení 974455, může se stát, že aplikace Internet Explorer nebude fungovat správně. Pokud k této situaci dojde, odinstalujte aktualizaci 976749, nainstalujte aktualizaci zabezpečení 974455 a pak znovu nainstalujte aktualizaci 976749.

Jak potíže obejít

Doporučujeme pokračovat v instalaci kumulativní aktualizace zabezpečení 974455 a nainstalovat aktualizaci 976749, pokud máte potíže popsané v tomto článku. Zákazníci, kteří se rozhodnou tuto kumulativní aktualizaci zabezpečení nenainstalovat, ohrozí své systémy.

U prvního a druhého scénáře, které jsou popsány v části Příznaky, můžete v případě, že nechcete nainstalovat aktualizaci zabezpečení 974455, použít alternativní řešení. V rámci alternativního řešení stačí explicitně deklarovat proměnnou Array() jako proměnnou jazyka VBScript. Lze ji pak předávat metodě showModalDialog() nebo showModelessDialog(), aniž by docházelo k chybě Neshoda typů.

Příklad: Následující skript VBScript způsobí chybu skriptu Neshoda typů.
// NESHODA TYPŮ
vReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Následující skript VBScript předá pole metodě showModalDialog() nebo showModelessDialog(), aniž by docházelo k chybě Neshoda typů.
// BEZ CHYBY NESHODA TYPŮ
Dim myArray
myArray=Array(1,2,3,4,5,6,7)
vReturn = window.showModalDialog("http://www.contoso.com", myArray)
U třetího scénáře popsaného dříve můžete v případě, že nechcete nainstalovat aktualizaci zabezpečení 974455, použít alternativní řešení. Chcete-li tyto potíže vyřešit v rámci scénářů, v nichž je jednodimenzionální pole Array() předáváno jako hodnota vlastnosti returnValue, použijte funkce Join a Split jazyka VBScript. To vám umožní předávat hodnoty Array() vlastnosti returnValue.

Příklad: Následující skript VBScript způsobí chybu skriptu Neshoda typů.

// NESHODA TYPŮ
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.returnvalue = arrayItems
Použijete-li funkce Join a Split jazyka VBScript, můžete parametr returnValue nastavit, aniž by došlo k chybě skriptu Neshoda typů.

// BEZ CHYBY NESHODA TYPŮ
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3

Dim arrString = Join(arrayItems, ";")
Window.returnvalue = arrString
Dim strTemp = window.showModalDialog(……)
Dim arrayItems = Split(strTemp, ";")

U třetího scénáře popsaného výše, kde jsou vlastnosti returnValue předávány vícedimenzionální hodnoty Array() nebo hodnoty Array(), které obsahují objekty, můžete v případě, že nechcete nainstalovat aktualizaci zabezpečení 974455, implementovat alternativní řešení. Chcete-li tyto potíže vyřešit, použijte k nastavení vlastnosti returnValue funkci jazyka JavaScript. Tato funkce jazyka JavaScript je k dispozici pro funkce a podprogramy jazyka VBScript. V jazyku VBScript bude k dispozici libovolná hodnota vlastnosti returnValue, která byla nastavena funkcí jazyka JavaScript.

Příklad: Následující skript VBScript způsobí chybu skriptu Neshoda typů.
// NESHODA TYPŮ
<script LANGUAGE=vbscript>
Option Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End Sub
</script>
Současné použití funkce jazyka JavaScript se stávajícím skriptem v jazyce VBScript umožňuje nastavit vlastnost returnValue, aniž by došlo k chybě skriptu Neshoda typů.
// BEZ CHYBY NESHODA TYPŮ
<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>

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Vlastnosti

ID článku: 976949 - Poslední aktualizace: 3. prosince 2009 - Revize: 3.1
Informace v tomto článku jsou určeny pro produkt:
  • Windows Internet Explorer 8 na těchto platformách
    • 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 Enterprise
    • Windows 7 Home Basic
    • Windows 7 Home Premium
    • Windows 7 Professional
    • Windows 7 Ultimate
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Home Edition
    • 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 na těchto platformách
    • 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 Enterprise
    • Windows 7 Home Basic
    • Windows 7 Home Premium
    • Windows 7 Professional
    • Windows 7 Ultimate
    • Windows Vista Business
    • Windows Vista Enterprise
    • Windows Vista Home Basic
    • Windows Vista Home Premium
    • Windows Vista Ultimate
    • Windows Vista Enterprise 64-bit edition
    • Windows Vista Home Basic 64-bit edition
    • Windows Vista Home Premium 64-bit edition
    • Windows Vista Ultimate 64-bit edition
    • Windows Vista Business 64-bit edition
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Home Edition
    • 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 na těchto platformách
    • Microsoft Windows XP Professional
    • Microsoft Windows XP Home Edition
    • 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 na těchto platformách
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows 2000 Server
  • Microsoft Internet Explorer 5.01 Service Pack 4 na těchto platformách
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows 2000 Server
Klíčová slova: 
kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949

Dejte nám zpětnou vazbu

 

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