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

Traduções deste artigo Traduções deste artigo
ID do artigo: 976949 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

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:
974455 MS09-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:
    http://msdn.microsoft.com/pt-br/library/ms536759(VS.85).aspx
  • 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:
    http://msdn.microsoft.com/en-us/library/ms536761(VS.85).aspx/PathLink>
  • 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:
    http://msdn.microsoft.com/pt-br/library/ms534371(VS.85).aspx
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ÍVEL
vReturn = 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ÍVEL
Dim myArray
myArray=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ÍVEL
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.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ÍVEL
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, ";")

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 Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End 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 Explicit

Sub Window_OnLoad
setReturnValue()
msgbox window.returnValue
End 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: quinta-feira, 3 de dezembro de 2009 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Windows Internet Explorer 8 nas seguintes plataformas
    • 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 nas seguintes plataformas
    • 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 nas seguintes plataformas
    • 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 nas seguintes plataformas
    • 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 nas seguintes plataformas
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows 2000 Server
Palavras-chave: 
kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949

Submeter comentários

 

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