A 974455. számú összegző biztonsági frissítés telepítése után az Internet Explorer böngészőben típuseltérésről tájékoztató VBScript-hibaüzenet jelenhet meg

A cikk fordítása A cikk fordítása
Cikk azonosítója: 976949 - A cikkben érintett termékek listájának megtekintése.
Az összes kibontása | Az összes összecsukása

BEVEZETÉS

Az Internet Explorer böngésző 974455. számú összegző biztonsági frissítése, melyet a MS09-054 jelű biztonsági közlemény ismertet, típusellenőrzést vezetett be különféle metódusokba bizonyos biztonsági rések elhárítása érdekében. Egyes helyzetekben ezek az új biztonsági ellenőrzések típuseltérési hibát okozhatnak a VBScript-parancsfájlokat használó, illetve a VBScript- és JavaScript-kódot egyszerre futtató weblapokon.

Az MS09-054 jelű összegző biztonsági frissítésről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:
974455 MS09-054: Összegző biztonsági frissítés az Internet Explorer programhoz

A jelenség

Típuseltérésről tájékoztató hibaüzenet jelenhet meg azoknak a weblapoknak az esetében, amelyek ügyféloldali parancsnyelvként VBScriptet alkalmaznak, és a showModalDialog() vagy a showModelessDialog() metódust is használják. A Microsoft megállapította, hogy az alábbi három esetben történhet típuseltérési hiba:
  • showModalDialog()
    Az első eset az, ha a VBScript-parancsfájl egy Array() értéket ad át paraméterként a showModalDialog() metódusnak. A showModalDialog() metódus egy kötelező argumentumot (sURL), illetve két nem kötelező argumentumot (vArguments és sFeatures) támogat. A vArguments paraméter egy VARIANT típusú paraméter, mely a dokumentum megjelenítésekor használandó argumentumokat határozza meg. Ha a fejlesztő úgy dönt, hogy Array() értéket ad át közvetlenül a nem kötelező vArguments paraméterként, az típuseltérési hibához vezet.

    A showModalDialog metódusról további tájékoztatást a Microsoft MSDN alábbi weblapján talál:
    http://msdn.microsoft.com/hu-hu/library/ms536759(VS.85).aspx
  • showModelessDialog()
    A második eset az, ha a VBScript-parancsfájl egy Array() értéket ad át paraméterként a showModelessDialog() metódusnak. A showModelessDialog() metódus egy kötelező argumentumot (sURL), illetve két nem kötelező argumentumot (vArguments és sFeatures) támogat. A vArguments paraméter egy VARIANT típusú paraméter, mely a dokumentum megjelenítésekor használandó argumentumokat határozza meg. Ha a fejlesztő úgy dönt, hogy Array() értéket ad át közvetlenül a nem kötelező vArguments paraméterként, az típuseltérési hibához vezet.

    A showModelessDialog metódusról további tájékoztatást a Microsoft MSDN alábbi weblapján talál:
    http://msdn.microsoft.com/en-us/library/ms536761(VS.85).aspx/PathLink>
  • returnValue
    A harmadik esetben egy modális párbeszédpanel returnValue értékének explicit beállítása okozza a problémát. A returnValue egy olvasható és írható tulajdonság, melynek nincs alapértelmezett értéke. Az MSDN webhelyen lévő dokumentáció szerint a returnValue tulajdonság kizárólag a showModalDialog() metódussal létrehozott ablakok esetében érvényes. Ha a fejlesztő úgy dönt, hogy egy modális párbeszédpanel returnValue tulajdonságának értékét explicit módon Array() értékre állítja, az típuseltérési VBScript-hibához vezet.

    A returnValue tulajdonságról további tájékoztatást a Microsoft MSDN alábbi weblapján talál:
    http://msdn.microsoft.com/hu-hu/library/ms534371(VS.85).aspx
A Microsoft eddigi eredményei szerint a 974455. számú összegző biztonsági frissítéssel kapcsolatos típuseltérési hiba nem jelentkezik azoknál a weblapoknál, amelyek kizárólag JavaScriptet használnak ügyféloldali parancsnyelvként. A probléma csak a VBScript környezetet, illetve azon belül is a showModalDialog() metódus, a showModelessDialog() metódus és a returnValue tulajdonság használatát érinti. A VBScript és a JavaScript parancsnyelvet vegyesen alkalmazó weblapok esetében a hiba a korábban tárgyalt metódusok és tulajdonság használatakor léphet fel, illetve akkor, ha a weblap VBArray objektumot használ. A VBArray objektum használata ritka, ezért a jelen cikk az ezzel kapcsolatos problémákat nem tárgyalja.

Oka

Az Internet Explorer böngésző MS09-054 jelű összegző biztonsági frissítése az Internet Explorer korábban azonosított biztonsági réseinek javítására lett kiadva. Az összegző biztonsági frissítés részeként új ellenőrzési lépéseket vezettünk be a VARIANT típusú paraméterek veszélyes adattípusokra való véletlen konvertálásának megelőzése érdekében. A hozzáadott biztonsági ellenőrzések tovább növelik a felhasználói változóként átadott VARIANT típusú paraméterekre vonatkozó megkötéseket, hogy ezzel megóvják a felhasználót bizonyos támadásokkal szemben. Ez a szigorúbb ellenőrzés a VARIANT adattípust szabályosan használható webhelyeket is érintheti.

A megoldás

A probléma elhárításához telepítse a 976749. számú frissítést, miután telepítette a 974455. számú biztonsági frissítést. A problémáról a Microsoft Tudásbázis alábbi cikkében tájékozódhat:
976749 Megjelent egy frissítés az Internet Explorer programhoz, amely a KB974455 (MS09-054) jelű biztonsági frissítés telepítése után bekövetkező problémák megszüntetéséhez szükséges

Fontos: Ha nem telepítette a 974455. számú biztonsági frissítést, ne telepítse a 976749. számú frissítést, ellenkező esetben előfordulhat, hogy az Internet Explorer böngésző nem fog megfelelően működni. Ha ez megtörténne, távolítsa el a 976749. számú frissítést, telepítse a 974455. számú biztonsági frissítést, majd telepítse újra a 976749. számú frissítést.

Kerülő megoldás

Ha a jelen cikkben ismertetett jelenségeket tapasztalja, tanácsos folytatni a 974455. számú összegző biztonsági frissítés telepítését, illetve telepíteni a 976749. számú frissítést. Az összegző biztonsági frissítés eltávolítása biztonsági kockázatot jelent.

A jelenségeket ismertető bekezdésben tárgyalt első és második helyzet esetén egy kerülő megoldást is alkalmazhat, ha nem kívánja telepíteni a 974455. számú biztonsági frissítést. A probléma kerülő megoldásához explicit módon deklarálnia kell az Array() változót egy VBScript változóvá. A tömbök showModalDialog() vagy showModelessDialog() metódusnak való átadása nem okoz típuseltérési hibát.

Az alábbi VBScript-kód például típuseltérési hibához vezet.
// TÍPUSELTÉRÉSI HIBA
vReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Az alábbi VBScript-kód típuseltérési hiba nélkül ad át egy tömböt a showModialDialog() vagy showModelessDialog() metódusnak.
// NINCS TÍPUSELTÉRÉSI HIBA
Dim sajatTomb
sajatTomb=Array(1,2,3,4,5,6,7)
vReturn = window.showModalDialog("http://www.contoso.com", sajatTomb)
A korábban ismertetett helyzetek közül a harmadiknál létezik egy kerülő megoldás arra az esetre, ha nem kívánja telepíteni a 974455. számú frissítést. Azokban az esetekben, amelyekben egy egydimenziós Array() értéket kell átadnia a returnValue tulajdonságnak, használja a Join és a Split VBScript-függvényt. Ily módon közvetve Array() értékeket is adhat át a returnValue tulajdonságnak.

Az alábbi VBScript-kód például típuseltérési hibát okoz.

// TÍPUSELTÉRÉSI HIBA
Dim tombElemek
tombElemek(0) = 1
tombElemek(1) = 2
tombElemek(2) = 3
Window.returnvalue = tombElemek
A Join és a Split VBScript-függvény használatakor típuseltérési hiba nélkül állíthatja be a returnValue tulajdonság értékét.

// NINCS TÍPUSELTÉRÉSI HIBA
Dim tombElemek
tombElemek(0) = 1
tombElemek(1) = 2
tombElemek(2) = 3

Dim tombSzoveg = Join(tombElemek, ";")
Window.returnvalue = tombSzoveg
Dim ideigSzoveg = window.showModalDialog(……)
Dim tombElemek = Split(ideigSzoveg, ";")

Az alábbiakban a harmadik eset azon előfordulásainak kerülő megoldását láthatja, amelyeknél több dimenziós vagy objektumokat tartalmazó Array() értéket kell átadnia a returnValue tulajdonságnak. Kerülő megoldásként itt JavaScript-függvénnyel kell beállítania a returnValue tulajdonság értékét. A használandó JavaScript-függvény elérhető VBScript-szubrutinokkal és -függvényekkel, és a returnValue tulajdonság JavaScript-függvénnyel beállított értéke is elérhető marad a VBScript-parancsfájlnak.

Az alábbi VBScript-kód például típuseltérési hibát okoz.
// TÍPUSELTÉRÉSI HIBA
<script LANGUAGE=vbscript>
Option Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End Sub
</script>
A JavaScript-függvény meglévő VBScript-kóddal való együttes használata lehetővé teszi, hogy típuseltérési hiba nélkül állítsa be a returnValue tulajdonság értékét.
// NINCS TÍPUSELTÉRÉSI HIBA
<script Language=JavaScript>
function visszateresiErtekBeall(){
var visszateresiErtekTomb = new Array();
visszateresiErtekTomb[0] = 1;
visszateresiErtekTomb[1] = 2;
visszateresiErtekTomb[2] = 3;
window.returnValue = visszateresiErtekTomb;
}
</script>

<script LANGUAGE=vbscript??
Option Explicit

Sub Window_OnLoad
visszateresiErtekBeall()
msgbox window.returnValue
End Sub
</script>

Állapot

A Microsoft megerősítette, hogy a cikkben tárgyalt jelenség az érintett termékek hibájára vezethető vissza.

Tulajdonságok

Cikk azonosítója: 976949 - Utolsó ellenőrzés: 2009. december 3. - Verziószám: 3.1
A cikkben található információ a következő(k)re vonatkozik:
  • Windows Internet Explorer 8 a következő platformokon
    • 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 a következő platformokon
    • 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 a következő platformokon
    • 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 a következő platformokon
    • 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 a következő platformokon
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows 2000 Server
Kulcsszavak: 
kbtshoot kbbug kbsecvulnerability kbsecurity kbcode kbexpertiseinter kbsurveynew KB976949
A Microsoft tudásbázisban szolgáltatott információkat "az adott állapotban", bárminemű szavatosság vagy garancia nélkül biztosítjuk. A Microsoft kizár mindennemű, akár kifejezett, akár vélelmezett szavatosságot vagy garanciát, ideértve a forgalomképességre és az adott célra való alkalmasságra vonatkozó szavatosságot is. A Microsoft Corporation és annak beszállítói semmilyen körülmények között nem felelősek semminemű kárért, így a közvetlen, a közvetett, az üzleti haszon elmaradásából származó vagy speciális károkért, illetve a kár következményeként felmerülő költségek megtérítéséért, még abban az esetben sem, ha a Microsoft Corporationt vagy beszállítóit az ilyen károk bekövetkeztének lehetőségére figyelmeztették. Egyes államok joga nem teszi lehetővé bizonyos károkért a felelősség kizárását vagy korlátozását, ezért a fenti korlátozások az ön esetében esetleg nem alkalmazhatók.

Visszajelzés küldése

 

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