Você está offline; aguardando reconexão

Você recebe uma mensagem de erro de script VBScript "Tipo Incompatível" no Internet Explorer após instalar a atualização de segurança cumulativa 974455

INTRODUÇÃO
A atualização de segurança cumulativa 974455 do Internet Explorer (descrita em MS09-054) apresentou novas verificações de segurança de "Tipo" em vários métodos para resolver vulnerabilidades de segurança identificadas. Em certos cenários, essas novas verificações de segurança de tipo podem resultar em erros de script de "Tipo incompatível" em páginas da Web que usam VBScript ou em páginas da Web que usam uma mistura de VBScript e JavaScript.

Para obter informações adicionais sobre o artigo MS09-054, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
974455MS09-054: Atualização de segurança cumulativa para o Internet Explorer
Sintomas
Páginas da Web que usam VBScript com linguagem de scripts no cliente e que usam os métodos showModalDialog() ou showModelessDialog() podem encontrar um erro de script de "Tipo incompatível". A Microsoft identificou os três cenários a seguir em que um erro de script de "Tipo incompatível" pôde ser gerado:
  • showModalDialog()
    O primeiro cenário envolve a passagem de um valor Array() como um parâmetro para o método showModalDialog() no VBScript. O método showModalDialog() aceita um único argumento obrigatório (sURL) e dois argumentos opcionais (vArguments e sFeatures). O parâmetro vArguments é de tipo VARIANT que especifica os argumentos a serem usados ao exibir o documento. Se um desenvolvedor decidir passar um Array() diretamente para o parâmetro opcional vArguments, ocorrerá um erro de script de "Tipo Incompatível".

    Para obter mais informações sobre o método showModalDialog, visite a seguinte página da Web da Microsoft MSDN:
  • showModelessDialog()
    O segundo cenário envolve a passagem de um valor Array() como um parâmetro para o método showModelessDialog() no VBScript. O método showModelessDialog() aceita um único argumento obrigatório (sURL) e dois argumentos opcionais (vArguments e sFeatures). O parâmetro vArguments é de tipo VARIANT que especifica os argumentos a serem usados ao exibir o documento. Se um desenvolvedor decidir passar um Array() diretamente para o parâmetro opcional vArguments, ocorrerá um erro de script de "Tipo Incompatível".

    Para obter mais informações sobre o método showModelessDialog, visite a seguinte página da Web da Microsoft MSDN:
  • returnValue
    Terceiro cenário envolve a configuração explícita da propriedade returnValue de uma janela de Caixa de Diálogo Modal. A propriedade returnValue é uma propriedade de leitura/gravação que não tem valor padrão. De acordo com a documentação no MSDN, a propriedade returnValue se aplica somente às janelas criadas com o método showModalDialog(). Se um desenvolvedor decidir configurar explicitamente a propriedade returnValue de uma janela de Caixa de Diálogo Modal como um valor Array() no VBScript, ocorrerá um erro de script de "Tipo Incompatível".

    Para obter mais informações sobre a propriedade returnValue, visite a seguinte página da Web da Microsoft MSDN:
Atualmente, a Microsoft não notou a ocorrência de erros de scripts de "Tipo Incompatível" resultantes da atualização de segurança cumulativa 974455 em páginas da Web que usam JavaScript como única linguagem de scripts no cliente. Somente páginas da Web que usam o método showModalDialog(), o método showModelessDialog() ou a propriedade returnValue em VBScript parecem ser afetadas. Se a página da Web contiver uma mistura de VBScript e JavaScript, ela poderá ser afetada se usar os métodos ou as propriedades que foram discutidos anteriormente no VBScript ou se a página da Web usar o objeto VBArray. O uso do objeto VBArray não é comum e os cenários que envolvem VBArray não serão cobertos por este artigo da Base de Dados de Conhecimento.
Causa
A atualização de segurança cumulativa MS09-054 para Internet Explorer foi lançada para resolver vulnerabilidades de segurança identificadas no Internet Explorer. Como parte da atualização de segurança cumulativa, o Internet Explorer apresentou novas verificações de conversão não intencional de parâmetros do tipo VARIANT em tipos de dados perigosos. A fim de proteger o usuários contra certos tipos de ataque, as verificações de segurança adicionais impõem restrições de segurança adicionais a parâmetros do tipo VARIANT que são passados como parte de variáveis controladas pelo usuário. Essas verificações adicionais podem afetar cenários de navegação legítimos que usam tipos de dados VARIANT.
Resolução
Para resolver esse problema, instale a atualização 976749 após instalar a atualização de segurança 974455.Para obter mais informações sobre esse problema, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft:
976749 Uma atualização está disponível para o Internet Explorer que resolve problemas que ocorrem após a aplicação da atualização de segurança 974455 (MS09-054)

Importante Se você não tiver instalado a atualização de segurança 974455, não instale a atualização 976749. Se você instalar a atualização 97674 antes de instalar a atualização de segurança 974455, o Internet Explorer pode não funcionar corretamente. Se isso ocorrer, desinstale a atualização 976749, instale a atualização de segurança 974455 e reinstale atualização 976749.
Como Contornar
Recomendamos aplicar a atualização de segurança cumulativa 974455 e instalar a atualização 976749 se os sintomas descritos neste artigo ocorrerem. Os clientes que decidirem remover a atualização de segurança cumulativa colocarão seus sistemas em risco.

Para o primeiro e o segundo cenários discutidos na seção "Sintomas", você pode implementar uma solução alternativa se não quiser instalar a atualização de segurança 974455. Para solucionar esse problema, declare explicitamente a variável Array() em uma variável VBScript. Matrizes podem ser passadas para os métodos showModalDialog() ou showModelessDialog() sem um erro de script de "Tipo Incompatível".

Por exemplo, o VBScript a seguir causará um erro de script de "Tipo Incompatível".
// TIPO INCOMPATÍVELvReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
O VBScript a seguir passará uma matriz para os métodos showModalDialog() ou showModelessDialog() sem um erro de script de "Tipo Incompatível".
// SEM ERRO DE TIPO INCOMPATÍVELDim myArraymyArray=Array(1,2,3,4,5,6,7)vReturn = window.showModalDialog("http://www.contoso.com", myArray)
Para o terceiro cenário discutido anteriormente, você pode implementar uma solução alternativa se não quiser instalar a atualização de segurança 974455. Para solucionar esse problema em cenários em que um valor Array() unidimensional é passado para a propriedade returnValue, use as funções VBScript Join e Split. Isso permite que você passe valores Array() para a propriedade returnValue.

Por exemplo, o VBScript a seguir gera um erro de script de "Tipo Incompatível".
// TIPO INCOMPATÍVELDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Window.returnvalue = arrayItems
Ao usar as funções VBScript Join e Split você pode definir a propriedade returnValue sem gerar um erro de script de "Tipo Incompatível".
// SEM ERRO DE TIPO INCOMPATÍVELDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Dim arrString = Join(arrayItems, ";")Window.returnvalue = arrStringDim strTemp = window.showModalDialog(……)Dim arrayItems = Split(strTemp, ";")
Para o terceiro cenário discutido anteriormente, onde os valores Array() multidimensional ou Array() que possuem objetos foram passados para a propriedade returnValue, você pode implementar uma solução alternativa se não quiser instalar a atualização de segurança 974455. Para solucionar o problema nesse cenário, você pode usar uma função JavaScript para definir a propriedade returnValue. Essa função JavaScript está disponível para sub-rotinas e funções VBScript. Todos os valores da propriedade returnValue definidos por uma função JavaScript estarão disponíveis para o VBScript.

Por exemplo, o VBScript a seguir gera um erro de script de "Tipo Incompatível".
// TIPO INCOMPATÍVEL<script LANGUAGE=vbscript>Option ExplicitSub Window_OnLoadDim abc(1,2,3)Window.ReturnValue = abcEnd Sub</script>
Ao usar uma função JavaScript com um VBScript existente você pode definir a propriedade returnValue sem gerar um erro de script de "Tipo Incompatível".
// SEM ERRO DE TIPO INCOMPATÍVEL<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>
Situação
A Microsoft confirmou que este é um problema que ocorre nos produtos Microsoft que estão listados na seção "Aplica-se a".
Propriedades

ID do Artigo: 976949 - Última Revisão: 12/03/2009 15:10:11 - Revisão: 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
Comentários
/html>