Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

INTRODUCCIÓN

La actualización de seguridad acumulativa para Internet Explorer 974455 (descrita en MS09-054) ha introducido comprobaciones de seguridad de "Tipo" adicionales en diversos métodos para solucionar las vulnerabilidades de seguridad detectadas. En algunos casos, estas nuevas comprobaciones de seguridad de tipo pueden provocar errores de secuencia de comandos "No coinciden los tipos" en las páginas web que utilicen VBScript o una combinación de VBScript y JavaScript.

Para obtener más información acerca de MS09-0545, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

974455MS09-054: Actualización de seguridad acumulativa para Internet Explorer

Síntomas

Es posible que las páginas web que utilicen VBScript como lenguaje de secuencia del cliente y el método showModalDialog() o showModelessDialog() reciban el error de secuencia de comandos "No coinciden los tipos". Microsoft ha identificado los siguientes tres escenarios en los que el error de secuencia de comandos "No coinciden los tipos" se puede generar:

  • showModalDialog()
    El primer escenario implica pasar un valor Array() como parámetro al método showModalDialog() en VBScript. El método showModalDialog() admite un argumento necesario (sURL) y dos argumentos opcionales (vArguments y sFeatures). El parámetro de vArguments es un parámetro de tipo VARIANT que especifica los argumentos que se utilizan al mostrar el documento. Si un desarrollador decide pasar directamente un valor Array() al parámetro opcional vArguments, se producirá un error de secuencia de comando "No coinciden los tipos".


    Para obtener más información acerca del método showModalDialog, visite la siguiente página web de MSDN de Microsoft:

    http://msdn.microsoft.com/es-es/library/ms536759(VS.85).aspx

  • showModelessDialog()
    El segundo escenario implica pasar un valor Array() como parámetro al método showModelessDialog() en VBScript. El método showModelessDialog() admite un argumento necesario (sURL) y dos argumentos opcionales (vArguments y sFeatures). El parámetro de vArguments es un parámetro de tipo VARIANT que especifica los argumentos que se utilizan al mostrar el documento. Si un desarrollador decide pasar directamente un valor Array() al parámetro opcional vArguments, se producirá un error de secuencia de comando "No coinciden los tipos".



    Para obtener más información acerca del método showModelessDialog, visite la siguiente página web de MSDN de Microsoft:

    http://msdn.microsoft.com/en-us/library/ms536761(VS.85).aspx/PathLink>

  • returnValue
    El tercer escenario implica la configuración explícita de la propiedad returnValue de una ventana de diálogo modal. La propiedad returnValue es una propiedad de lectura y escritura que no tiene ningún valor predeterminado. Según a la documentación de MSDN, la propiedad returnValue se aplica sólo a esas ventanas creadas con el método showModalDialog(). Si un desarrollador decide establecer de forma explícita la propiedad returnValue opcional de una ventana de diálogo modal a un valor Array() en VBScript, se producirá un error de secuencia de comando "No coinciden los tipos".


    Para obtener más información acerca de la propiedad returnValue, visite la siguiente página web de MSDN de Microsoft:

    http://msdn.microsoft.com/es-es/library/ms534371(VS.85).aspx

Microsoft no ha detectado actualmente que la actualización de seguridad acumulativa 974455 provoque errores de secuencia de comandos "No coinciden los tipos" en las páginas web que utilizan JavaScript como único lenguaje de secuencia de comandos del cliente. Este problema parece afectar sólo a las páginas que utilicen los métodos showModalDialog() y showModelessDialog() o la propiedad returnValue en VBScript. Cuando una página web contiene una combinación de VBScript y JavaScript, es posible que se vea afectada por este problema si utiliza los métodos o propiedades mencionadas anteriormente en VBScript o si utiliza el objeto VBArray. El uso del objeto VBArray no es habitual y los escenarios en los que se usa VBArray no se tratarán en este artículo de Knowledge Base.

Causa

Se ha publicado la actualización de seguridad acumulativa para Internet Explorer MS09-054 para solucionar las vulnerabilidades de seguridad detectadas en Internet Explorer. Como parte de esta actualización de seguridad, Internet Explorer introdujo nuevas comprobaciones en la conversión no deseada de los parámetros de tipo VARIANT en tipos de datos peligrosos. Estas comprobaciones de seguridad adicionales imponen restricciones de seguridad adicionales en los parámetros de tipo VARIANT cuando se transfieren como parte de las variables controladas por el usuario con el fin de proteger a éste de diversas clases de ataques. Estas comprobaciones adicionales pueden afectar a escenarios de exploración legítimos que utilizan tipos de datos VARIANT.

Solución

Para resolver este problema, instale la actualización 976749 después de instalar la actualización de seguridad acumulativa 974455. Para obtener más información acerca de este problema, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

976749Ya está disponible una actualización para Internet Explorer que resuelve problemas que aparecen después de aplicar la actualización de seguridad 974455 (MS09-054)
Importante: no instale la actualización 976749 si no tiene instalada la actualización de seguridad 974455. Si instala la actualización 976749 sin haber instalado antes la actualización de seguridad 974455, puede que Internet Explorer no funcione correctamente. Si se produce este problema, desinstale la actualización 976749, instale la actualización de seguridad 974455 y, a continuación, vuelva a instalar la actualización 976749.


Solución

En caso de que experimente los síntomas descritos en este artículo, le recomendamos que siga aplicando la actualización de seguridad acumulativa 974455 y que instale la actualización 976749. Los clientes que decidan eliminar la actualización de seguridad acumulativa pondrán sus sistemas en peligro.


Para el primer y el segundo escenario que se tratan en la sección "Síntomas", puede implementar una solución alternativa en caso de que no desee instalar la actualización de seguridad 974455. Para solucionar este problema, declare explícitamente la variable Array() en una variable de VBScript. Se pueden pasar matrices al método showModalDialog() o showModelessDialog() sin que se produzca un error de secuencia de comandos "No coinciden los tipos".

Por ejemplo, el código VBScript siguiente provocará un error de secuencia de comandos "No coinciden los tipos".

// TYPE MISMATCH
vReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))

El siguiente elemento VBScript pasará una matriz al método showModalDialog() o showModelessDialog() sin que se produzca un error de secuencia de comandos "No coinciden los tipos".

// NO TYPE MISMATCH ERROR
Dim myArray
myArray=Array(1,2,3,4,5,6,7)
vReturn = window.showModalDialog("http://www.contoso.com", myArray)

Para el tercer escenario descrito anteriormente, puede implementar una solución alternativa en caso de que no desee instalar la actualización de seguridad 974455. Para solucionar este problema en situaciones en las que un valor Array() de una única dimensión pasa a la propiedad returnValue, utilice las funciones habilitadas para unir y dividir VBScript. De esta forma, podrá pasar valores Array() a la propiedad returnValue.

Por ejemplo, el código VBScript siguiente genera un error de secuencia de comandos "No coinciden los tipos".

// TYPE MISMATCH
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.returnvalue = arrayItems

Al utilizar las funciones para unir y dividir VBScript, puede establecer la propiedad returnValue sin que se genere un error de secuencia de comandos "No coinciden los tipos".

// NO TYPE MISMATCH ERROR
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, ";")

En el tercer escenario descrito anteriormente, en el que los valores multidimensionales Array() o valores Array() que tienen objetos pasan a la propiedad returnValue, puede implementar una solución alternativa si no desea instalar la actualización de seguridad 974455. Para solucionar este problema en este escenario, puede utilizar una función JavaScript con el fin de establecer la propiedad returnValue. Esta función de JavaScript está disponible para las subrutinas y funciones de VBScript. Cualquier valor de la propiedad returnValue que haya establecido una función de JavaScript estará disponible en VBScript.



Por ejemplo, el código VBScript siguiente genera un error de secuencia de comandos "No coinciden los tipos".

// TYPE MISMATCH
<script LANGUAGE=vbscript>
Option Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End Sub
</script>

Al utilizar una función de JavaScript con un elemento VBScript existente, puede establecer la propiedad returnValue sin que se genere un error de secuencia de comandos "No coinciden los tipos".

// 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 Explicit

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

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×