Viene visualizzato un messaggio di errore di script VBScript che segnala una mancata corrispondenza in Internet Explorer dopo l'installazione dell'aggiornamento della protezione cumulativo 974455

INTRODUZIONE
L'aggiornamento cumulativo della protezione per Internet Explorer 974455, descritto in MS09-054 ha introdotto una verifica di sicurezza "Type" aggiuntiva all'interno di vari metodi per risolvere le vulnerabilità della protezione identificate. In alcune circostanze, questi nuovi tipi di verifiche sulla protezione possono risultare nei messaggi di errore "Tipo non corrispondente" nelle pagine Web che utilizzano VBScript o nelle pagine Web che utilizzano contemporaneamente VBScript e JavaScript.

Per ulteriori informazioni su MS09-054, fare clic sul seguente numero dell'articolo per visualizzarlo nella Microsoft Knowledge Base:
974455MS09-054: Aggiornamento cumulativo della protezione per Internet Explorer
Sintomi
Nelle pagine Web che utilizzano VBScript come il linguaggio di scripting sul lato client e che utilizzano i metodi showModalDialog o showModelessDialog possono verificarsi errori di script come "Tipo non corrispondente". Microsoft ha identificato le seguenti tre condizioni in cui un errore di script come"Tipo non corrispondente" può essere generato:
  • showModalDialog()
    La prima condizione implica il passaggio di un valore Array() come parametro al metodo showModalDialog() in VBScript. Il metodo showModalDialog() supporta un argomento obbligatorio (sURL) e due argomenti opzionali (vArguments e sFeatures). Il parametro vArguments è di tipo VARIANT che specifica gli argomenti da utilizzare quando si visualizza il documento. Se uno sviluppatore decide di passare un Array() direttamente al parametro opzionale vArguments, si verificherà un errore di script "Tipo non corrispondente".

    Per ulteriori informazioni sul metodo showModalDialog, visitare la seguente pagina Web MSDN di Microsoft:
  • showModelessDialog()
    La seconda condizione implica il passaggio di un valore Array() come parametro al metodo showModelessDialog() in VBScript. Il metodo showModelessDialog() supporta un argomento obbligatorio (sURL) e due argomenti opzionali (vArguments e sFeatures). Il parametro vArguments è di tipo VARIANT che specifica gli argomenti da utilizzare quando si visualizza il documento. Se uno sviluppatore decide di passare un Array() direttamente al parametro opzionale vArguments, si verificherà un errore di script "Tipo non corrispondente".

    Per ulteriori informazioni sul metodo showModelessDialog, visitare la seguente pagina Web MSDN di Microsoft:
  • returnValue
    La terza condizione implica l'impostazione esplicita della proprietà di returnValue di una finestra di dialogo modale. La proprietà returnValue è una proprietà di lettura/scrittura che non ha un valore predefinito. In base alla documentazione su MSDN, la proprietà returnValue si applica solo a quelle finestre create con il metodo showModalDialog(). Se uno sviluppatore decide di impostare esplicitamente la proprietà returnValue di una finestra di dialogo modale a un valore Array() in VBScript, si verificherà un errore di script "Tipo non corrispondente".

    Per ulteriori informazioni sulla proprietà returnValue, visitare la seguente pagina Web MSDN di Microsoft:
Attualmente, Microsoft non ha osservato l'errore di script "Tipo non corrispondnete" derivanti dall'aggiornamento cumulativo della protezione 974455 nella pagina Web che utilizza JavaScript come unico linguaggio di scripting del lato client. Sembrano presentare problemi solamente le pagine Web che utilizzano i metodi showModalDialog(), showModelessDialog(), o la proprietà returnValue all'interno di VBScript. Se la pagina Web contiene contemporaneamente sia VBScript che JavaScript, può presentare problemi se utilizza i metodi o le proprietà discussi precedentemente per quanto riguarda VBScript o se la pagina Web utilizza l'oggetto VBArray. L'utilizzo dell'oggetto VBArray non è comune, le condizioni relative a VBArray non verranno discusse in questo articolo della Knowledge Base.
Cause
Aggiornamento cumulativo della protezione per Internet Explorer MS09-054 è stato rilasciato per risolvere le vulnerabilità della protezione identificate in Internet Explorer. In quanto parte dell'aggiornamento cumulativo della protezione, Internet Explorer ha introdotto nuovi controlli contro casting involontari di parametri VARIANT Type in dati pericolosi. Il controllo aggiuntivo della protezione impone restrizioni aggiuntive della protezione su parametri VARIANT Type che sono stati cambiati in variabili controllate dall'utente per consentire una protezione migliore da determinati tipi di attacco. Questi ulteriori controlli potrebbero influire su condizioni di navigazione valide che utilizzano dati di tipo VARIANT.
Risoluzione
Per risolvere il problema, installare l'aggiornamento 976749 dopo l'installazione dell'aggiornamento della protezione 974455. Per ulteriori informazioni su questo problema, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
976749 È disponibile un aggiornamento di Internet Explorer per la risoluzione dei problemi riscontrati dopo aver applicato l'aggiornamento della protezione 974455 (MS09-054)

Importante Non installare l'aggiornamento 976749 senza aver prima installato l'aggiornamento della protezione 974455. Se viene installato l'aggiornamento 976749 senza aver prima installato l'aggiornamento della protezione 974455, Internet Explorer potrebbe non funzionare correttamente. In questo caso, disinstallare l'aggiornamento 976749, installare l'aggiornamento della protezione 974455, quindi reinstallare l'aggiornamento 976749.
Workaround
Si consiglia di continuare ad applicare l'aggiornamento cumulativo della protezione 974455 e di installare l'aggiornamento 976749 se si riscontrano i sintomi descritti in questo articolo. I clienti che decidono di rimuovere l'aggiornamento cumulativo della protezione metteranno in pericolo il sistema in uso.

Per quanto riguarda la prima e la seconda condizione discussa nella sezione "Sintomi", è possibile implementare questa soluzione se non si desidera installare l'aggiornamento della protezione 974455. Per aggirare il problema, dichiarare esplicitamente la variabile Array() in una variabile di VBScript. Arrays può essere passato al metodo showModalDialog() o showModelessDialog() senza un errore di script "Tipo non corrispondente".

Ad esempio, il seguente VBScript causa un errore di script "Tipo non corrispondente".
// TYPE MISMATCHvReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Arrays può essere passato al metodo showModalDialog() o showModelessDialog() senza un errore di script "Tipo non corrispondente".
// NO TYPE MISMATCH ERRORDim myArraymyArray=Array(1,2,3,4,5,6,7)vReturn = window.showModalDialog("http://www.contoso.com", myArray)
Nella terza condizione discussa precedentemente, è possibile implementare una soluzione se non si desidera installare l'aggiornamento della protezione 974455. Per aggirare questo problema in condizioni in cui una singola dimensione del valore Array() passa alla proprietà returnValue utilizzare le funzioni VBScript Connetti e Dividi. In questo modo si passano valori Array() alla proprietà returnValue.

Ad esempio, il seguente VBScript causa l'errore di script "Tipo non corrispondente".
// TYPE MISMATCHDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Window.returnvalue = arrayItems
Quando vengono utilizzate le funzioni VBScript Connetti e Dividi, è possibile impostare le proprietà returnValue senza generare l'errore di script "Mancata corrispondenza tipo".
// NO TYPE MISMATCH ERRORDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Dim arrString = Join(arrayItems, ";")Window.returnvalue = arrStringDim strTemp = window.showModalDialog(……)Dim arrayItems = Split(strTemp, ";")
Nella terza condizione discussa precedentemente, in cui valori Array() multidimensionali o valori Array() che hanno oggetti passati alla proprietà returnValue è possibile implementare questa soluzione se non si desidera installare l'aggiornamento 974455. Per aggirare questo problema in questa condizione, è possibile utilizzare la funzione JavaScript per impostare la proprietà returnValue. Questa funzione JavaScript è disponibile per le funzioni e subroutine VBScript. Qualsiasi valore di proprietà returnValue impostato da una funzione JavaScript sarà disponibile per VBScript.

Ad esempio, il seguente VBScript causa l'errore di script "Tipo non corrispondente".
// TYPE MISMATCH<script LANGUAGE=vbscript>Option ExplicitSub Window_onLoad()Dim abc(1,2,3)Window.ReturnValue = abcEnd Sub</script>
Quando le funzioni JavaScript vengono utilizzate insieme a un VBScript esistente, è possibile impostare la proprietà returnValue senza generare l'errore di script "Tipo non corrispondente".
// NO TYPE MISMATCH ERROR<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 ha confermato che questo problema si verifica con i prodotti elencati nella sezione "Le informazioni in questo articolo si applicano a".
Proprietà

ID articolo: 976949 - Ultima revisione: 12/01/2009 12:49:31 - Revisione: 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