Näyttöön tulee VBScriptin tyyppiristiriidan komentosarjavirhesanoma Internet Explorerissa sen jälkeen, kun koottu tietoturvapäivitys 974455 on asennettu

Artikkeleiden käännökset Artikkeleiden käännökset
Artikkelin tunnus: 976949 - Näytä tuotteet, joita tämä artikkeli koskee.
Laajenna kaikki | Kutista kaikki

ESITTELY

Internet Explorerin koottu tietoturvapäivitys 974455 (kuvattu tietoturvatiedotteessa MS09-054) lisäsi tyyppiturvallisuustarkistukset useisiin menetelmiin korjaamaan tunnistetut tietoturvaheikkoudet. Tietyissä tilanteissa nämä uudet tyyppiturvallisuustarkistukset voivat aiheuttaa tyyppiristiriidan komentosarjavirheitä VBScriptiä tai VBScriptin ja JavaScriptin yhdistelmää käyttävillä WWW-sivuilla.

Lisätietoja tietoturvatiedotteesta MS09-054 saat napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokannassa:
974455 MS09-054: Internet Explorerin koottu tietoturvapäivitys (tämä artikkeli saattaa olla englanninkielinen)

Oire

VBScriptiä asiakaspuolen komentosarjakielenä käyttävillä WWW-sivuilla, jotka käyttävät showModalDialog()- tai showModelessDialog()-menetelmiä, voi ilmetä tyyppiristiriidan komentosarjavirhe. Microsoft on tunnistanut seuraavat kolme tilannetta, joissa saatetaan muodostaa tyyppiristiriidan komentosarjavirhe:
  • showModalDialog()
    Ensimmäiseen tilanteeseen liittyy Array()-arvon välittäminen showModalDialog()-menetelmän parametrina VBScriptissä. Menetelmä showModalDialog() tukee yhtä pakollista argumenttia (sURL) ja kahta valinnaista argumenttia (vArguments ja sFeatures). Parametri vArguments on VARIANT-tyyppiparametri, joka määrittää tiedoston näyttämisessä käytettävät argumentit. Jos kehittäjä päättää välittää Array()-arvon suoraan valinnaiseen vArguments-parametriin, ilmenee tyyppiristiriidan komentosarjavirhe.

    Lisätietoja showModalDialog-menetelmästä on seuraavalla Microsoft MSDN:n WWW-sivulla:
    http://msdn.microsoft.com/fi-fi/library/ms536759(VS.85).aspx
  • showModelessDialog()
    Toiseen tilanteeseen liittyy Array()-arvon välittäminen showModelessDialog()-menetelmän parametrina VBScriptissä. Menetelmä showModelessDialog() tukee yhtä pakollista argumenttia (sURL) ja kahta valinnaista argumenttia (vArguments ja sFeatures). Parametri vArguments on VARIANT-tyyppiparametri, joka määrittää tiedoston näyttämisessä käytettävät argumentit. Jos kehittäjä päättää välittää Array()-arvon suoraan valinnaiseen vArguments-parametriin, ilmenee tyyppiristiriidan komentosarjavirhe.

    Lisätietoja showModelessDialog-menetelmästä on seuraavalla Microsoft MSDN:n WWW-sivulla:
    http://msdn.microsoft.com/en-us/library/ms536761(VS.85).aspx/PathLink>
  • returnValue
    Kolmanteen tilanteeseen liittyy Modal Dialog -ikkunan returnValue-ominaisuuden asettaminen eksplisiittisesti. Ominaisuus returnValue on luku/kirjoitus-ominaisuus, jolla ei ole oletusarvoa. MSDN:ssä olevan dokumentaation mukaan returnValue-ominaisuus koskee vain showModalDialog()-menetelmällä luotuja ikkunoita. Jos kehittäjä päättää asettaa Modal Dialog -ikkunan returnValue-ominaisuuden eksplisiittisesti Array()-arvoksi VBScriptissä, ilmenee tyyppiristiriidan komentosarjavirhe.

    Lisätietoja return Value -ominaisuudesta on seuraavalla Microsoft MSDN:n WWW-sivulla:
    http://msdn.microsoft.com/fi-fi/library/ms534371(VS.85).aspx
Tällä hetkellä Microsoft ei ole havainnut tyyppiristiriidan komentosarjavirheiden aiheutuvan kootusta tietoturvapäivityksestä 974455 WWW-sivuilla, jotka käyttävät JavaScriptia ainoana asiakaspuolen komentosarjakielenään. Tämä ongelma vaikuttaa koskevan ainoastaan WWW-sivuja, jotka käyttävät showModalDialog()-menetelmää, showModelessDialog()-menetelmää tai returnValue-ominaisuutta VBScriptissä. Jos WWW-sivu sisältää sekä VBScriptiä että JavaScriptiä, ongelma saattaa koskea sitä, jos WWW-sivu käyttää aiemmin käsiteltyjä menetelmiä tai ominaisuuksia VBScriptissä tai jos WWW-sivu käyttää VBArray-objektia. VBArray-objektin käyttö on harvinaista, ja tämä Knowledge Base -tietokannan artikkeli ei käsittele tilanteita, joihin VBArray liittyy.

Syy

Internet Explorerin koottu tietoturvapäivitys MS09-054 julkaistiin korjaamaan Internet Explorerissa tunnistetut tietoturvaheikkoudet. Internet Explorer lisäsi osana tätä koottua tietoturvapäivitystä uusia tarkistuksia, jotka tarkistavat VARIANT-tyyppiparametrien vahingossa tehdyn vaarallisiksi tietotyypeiksi muuntamisen. Nämä suojauksen lisätarkistukset asettavat suojauksen lisärajoituksia käyttäjän hallitsemien muuttujien osana välitettäville VARIANT-tyyppiparametreille, jotta käyttäjää suojataan tietynlaisilta hyökkäyksiltä. Nämä lisätarkistukset saattavat vaikuttaa VARIANT-tietotyyppejä käyttäviin turvallisiin selaamistilanteisiin.

Ratkaisu

Voit ratkaista tämän ongelman asentamalla päivityksen 976749 sen jälkeen, kun olet asentanut tietoturvapäivityksen 974455. Saat lisätietoja tästä ongelmasta napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokannassa:
976749 Internet Explorerille on saatavana päivitys, joka ratkaisee tietoturvapäivityksen 974455 (MS09-054) asentamisen jälkeen ilmenevät ongelmat

Tärkeää Älä asenna päivitystä 976749, jos et ole asentanut tietoturvapäivitystä 974455. Jos asennat päivityksen 976749 asentamatta ensin tietoturvapäivitystä 974455, Internet Explorer ei ehkä toimi oikein. Jos tämä tapahtuu, poista päivityksen 976749 asennus, asenna tietoturvapäivitys 974455 ja asenna sitten päivitys 976749 uudelleen.

Workaround

Microsoft suosittelee, että pidät kootun tietoturvapäivityksen 974455 asennettuna ja asennat päivityksen 976749, jos kohtaat tässä artikkelissa kuvatut ongelmat. Asiakkaat, jotka päättävät poistaa kootun tietoturvapäivityksen, asettavat järjestelmänsä alttiiksi riskille.

Ongelman oireista kertovassa osassa käsitellyissä ensimmäisessä ja toisessa tilanteessa voit toteuttaa kiertotavan, jos et halua asentaa tietoturvapäivitystä 974455. Voit kiertää tämän ongelman määrittämällä Array()-muuttujan VBScript-muuttujaan eksplisiittisesti. Array-kohteet voidaan välittää showModalDialog()- tai showModelessDialog()-menetelmille niin, ettei tyyppiristiriidan komentosarjavirhettä ilmene.

Esimerkiksi seuraava VBScript-koodi aiheuttaa tyyppiristiriidan komentosarjavirheen.
// TYYPPIRISTIRIITA
vReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Seuraava VBScript-koodi välittää Array-kohteen showModalDialog()- tai showModelessDialog()-menetelmille niin, ettei tyyppiristiriidan komentosarjavirhettä ilmene.
// EI TYYPPIRISTIRIITAVIRHETTÄ
Dim myArray
myArray=Array(1,2,3,4,5,6,7)
vReturn = window.showModalDialog("http://www.contoso.com", myArray)
Kun kyseessä on aiemmin käsitelty kolmas tilanne, voit toteuttaa kiertotavan, jos et halua asentaa tietoturvapäivitystä 974455. Voit kiertää ongelman, joka ilmenee tilanteissa, joissa yksittäinen dimension Array()-arvo välitetään returnValue-ominaisuudelle, käyttämällä VBScript-funktioita Join ja Split. Tämä antaa sinun välittää Array()-arvoja returnValue-ominaisuudelle.

Esimerkiksi seuraava VBScript-koodi aiheuttaa tyyppiristiriidan komentosarjavirheen.

// TYYPPIRISTIRIITA
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.returnvalue = arrayItems
Kun käytät VBScript-funktioita Join ja Split, voit asettaa returnValue-ominaisuuden niin, ettei tyyppiristiriidan komentosarjavirhettä ilmene.

// EI TYYPPIRISTIRIITAVIRHETTÄ
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, ";")

Kun kyseessä on aiemmin käsitelty kolmas tilanne, jossa monidimensioiset Array()-arvot tai objekteja sisältävät Array()-arvot välitetään returnValue-ominaisuudelle, voit toteuttaa kiertotavan, jos et halua asentaa tietoturvapäivitystä 974455. Voit kiertää tämän ongelman tässä tilanteessa asettamalla returnValue-ominaisuuden JavaScript-funktion avulla. Tämä JavaScript-funktio on käytettävissä VBScript-alirutiineille ja -funktioille. VBScript pystyy käyttämään mitä tahansa JavaScript-funktion asettamaa returnValue-ominaisuusarvoa.

Esimerkiksi seuraava VBScript-koodi aiheuttaa tyyppiristiriidan komentosarjavirheen.
// TYYPPIRISTIRIITA
<script LANGUAGE=vbscript>
Option Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End Sub
</script>
Kun käytät JavaScript-funktiota yhdessä aiemmin luodun VBScript-koodin kanssa, voit asettaa returnValue-ominaisuuden niin, ettei tyyppiristiriidan komentosarjavirhettä ilmene.
// EI TYYPPIRISTIRIITAVIRHETTÄ
<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>

Tila

Microsoft on vahvistanut, että tämä ongelma esiintyy artikkelin alussa luetelluissa Microsoftin tuotteissa.

Ominaisuudet

Artikkelin tunnus: 976949 - Viimeisin tarkistus: 3. joulukuuta 2009 - Versio: 3.1
Artikkelin tiedot koskevat seuraavia tuotteita:
  • Windows Internet Explorer 8 seuraavilla käyttöjärjestelmillä
    • 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 seuraavilla käyttöjärjestelmillä
    • 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 seuraavilla käyttöjärjestelmillä
    • 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 seuraavilla käyttöjärjestelmillä
    • 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 seuraavilla käyttöjärjestelmillä
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows 2000 Server
Hakusanat: 
kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949

Anna palautetta

 

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