현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

이 브라우저는 지원되지 않습니다.

사이트를 사용하여 브라우저를 업데이트해야 합니다.

최신 버전의 Internet Explorer를 업데이트하세요.

누적 보안 업데이트 974455를 설치한 후에 Internet Explorer에서 VBScript "유형 불일치" 오류가 발생함

소개
Internet Explorer용 누적 보안 업데이트 974455(MS09-054에 설명)는 식별된 보안 취약성을 해결하기 위한 다양한 방법에 "유형" 안전 검사를 추가적으로 도입했습니다. 특정 상황에서 이러한 새로운 유형 안전 검사를 수행하면 VBScript를 사용하는 웹 페이지 또는 VBScript와 JavaScript를 함께 사용하는 웹 페이지에서 "유형 불일치" 스크립트 오류가 발생할 수 있습니다.

MS09-054에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오.
974455 MS09-054: Internet Explorer 누적 보안 업데이트
현상
클라이언트 쪽 스크립팅 언어로 VBScript를 사용하고 showModalDialog() 또는 showModelessDialog() 메서드를 사용하는 웹 페이지에서 "유형 불일치" 스크립트 오류가 발생할 수 있습니다. Microsoft는 "유형 불일치" 스크립트 오류가 발생할 수 있는 다음과 같은 세 가지 시나리오를 파악했습니다.
  • showModalDialog()
    첫 번째 시나리오는 VBScript에서 Array() 값을 showModalDialog() 메서드에 대한 매개 변수로 제공하는 것과 관련이 있습니다. showModalDialog() 메서드는 하나의 필수 인수(sURL)와 두 개의 선택적 인수(vArguments 및 sFeatures)를 지원합니다. vArguments 매개 변수는 문서를 표시할 때 사용할 인수를 지정하는 VARIANT 유형 매개 변수입니다. 개발자가 선택적 vArguments 매개 변수에 직접 Array()를 전달하기로 결정한 경우 "유형 불일치" 스크립트 오류가 발생합니다.

    showModalDialog 메서드에 대한 자세한 내용은 다음 Microsoft MSDN 웹 페이지를 참조하십시오.
  • showModelessDialog()
    두 번째 시나리오는 VBScript에서 Array() 값을 showModelessDialog() 메서드에 대한 매개 변수로 제공하는 것과 관련이 있습니다. showModelessDialog() 메서드는 하나의 필수 인수(sURL)와 두 개의 선택적 인수(vArguments 및 sFeatures)를 지원합니다. vArguments 매개 변수는 문서를 표시할 때 사용할 인수를 지정하는 VARIANT 유형 매개 변수입니다. 개발자가 선택적 vArguments 매개 변수에 직접 Array()를 전달하기로 결정한 경우 "유형 불일치" 스크립트 오류가 발생합니다.

    showModelessDialog() 메서드에 대한 자세한 내용은 다음 Microsoft MSDN 웹 페이지를 참조하십시오.
  • returnValue
    세 번째 시나리오는 모달 대화 상자 창의 returnValue 속성에 대한 명시적 설정과 관련이 있습니다. returnValue 속성은 기본값이 없는 읽기/쓰기 속성입니다. MSDN의 문서에 따르면 returnValue 속성은 showModalDialog() 메서드로 만든 창에만 적용됩니다. 개발자가 VBScript에서 모달 대화 상자 창의 returnValue 속성을 Array() 값으로 명시적으로 설정하기로 결정하면 "유형 불일치" 스크립트 오류가 발생합니다.

    return Value 속성에 대한 자세한 내용은 다음 Microsoft MSDN 웹 페이지를 참조하십시오.
현재 Microsoft는 JavaScript를 유일한 클라이언트 쪽 스크립팅 언어로 사용하는 웹 페이지에서 누적 보안 업데이트 974455로 인해 발생하는 "유형 불일치" 스크립트 오류를 확인하지 못했습니다. VBScript 내에서 showModalDialog() 메서드, showModelessDialog() 메서드 또는 returnValue 속성을 사용하는 웹 페이지만 영향을 받는 것으로 확인되었습니다. 웹 페이지에 VBScript 및 JavaScript가 모두 포함되어 있는 경우 웹 페이지의 VBScript 내에서 앞서 설명한 메서드나 속성이 사용되거나 웹 페이지에서 VBArray 개체가 사용되는 경우에는 영향을 받을 수 있습니다. VBArray 개체를 사용하는 것은 특별한 경우이며 VBArray와 관련된 시나리오는 이 기술 자료 문서에서 논의되지 않습니다.
원인
Internet Explorer용 누적 보안 업데이트 MS09-054는 Internet Explorer의 식별된 보안 취약성을 해결하기 위해 출시되었습니다. 누적 보안 업데이트의 일부로, Internet Explorer는 예기치 않게 VARIANT 유형 매개 변수를 위험한 데이터 유형으로 캐스팅하는 상황에 대한 새로운 검사를 도입했습니다. 이러한 추가 보안 검사는 사용자가 특정 오류의 공격으로부터 보호하기 위해 사용자 제어 변수의 일부로 제공되는 VARIANT 유형 매개 변수를 추가적인 제약합니다. 또한 이러한 추가 검사는 VARIANT 데이터 유형을 사용하는 적절한 탐색 시나리오에 영향을 미칠 수 있습니다.
해결 방법
이 문제를 해결하려면 보안 업데이트 974455를 설치한 후에 업데이트 976749를 설치하십시오. 이 문제에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오.
976749보안 업데이트 974455(MS09-054)를 적용한 후에 발생하는 문제를 해결하는 Internet Explorer용 업데이트를 사용할 수 있음

중요 보안 업데이트 974455를 설치하지 않은 경우 이 업데이트를 설치하지 마십시오. 보안 업데이트 974455를 먼저 설치하지 않고 이 업데이트를 설치하면 Internet Explorer가 제대로 작동하지 않을 수 있습니다. 이 경우 이 업데이트를 제거하고 보안 업데이트 974455를 설치한 후에 이 업데이트를 다시 설치하십시오.
해결 과정
누적 보안 업데이트 974455를 계속 적용하고, 이 문서에 설명된 현상이 발생할 경우 업데이트 976749를 설치하는 것이 좋습니다. 누적 보안 업데이트를 제거하면 시스템이 위험에 노출됩니다.

"현상" 절에서 논의된 첫 번째 및 두 번째 시나리오에서 보안 업데이트 974455를 설치하지 않으려는 경우 한 가지 해결 방법을 구현할 수 있습니다. 이 문제를 해결하려면 Array() 변수를 VBScript 변수로 명시적으로 선언하십시오. 배열은 "유형 불일치" 스크립트 오류 없이 showModalDialog() 또는 showModelessDialog() 메서드로 전달될 수 있습니다.

예를 들어 다음 VBScript는 "유형 불일치" 스크립트 오류를 발생합니다.
// TYPE MISMATCHvReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
다음 VBScript는 "유형 불일치" 스크립트 오류 없이 showModialDialog() 또는 showModelessDialog() 메서드에 배열을 전달합니다.
// NO TYPE MISMATCH ERRORDim myArraymyArray=Array(1,2,3,4,5,6,7)vReturn = window.showModalDialog("http://www.contoso.com", myArray)
앞서 논의된 세 번째 시나리오에서는 보안 업데이트 974455를 설치하지 않으려는 경우에 한 가지 해결 방법을 구현할 수 있습니다. 단일 차원 Array() 값이 returnValue 속성에 전달되는 시나리오에서 이 문제를 해결하려면 Join 및 Split VBScript 함수를 사용하십시오. 이렇게 하면 Array() 값이 returnValue 속성으로 전달됩니다.

예를 들어 다음 VBScript는 "유형 불일치" 스크립트 오류를 발생합니다.
// TYPE MISMATCHDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Window.returnvalue = arrayItems
Join 및 Split VBScript 함수를 사용할 경우 "유형 불일치" 스크립트 오류 없이 returnValue 속성을 설정할 수 있습니다.
// NO TYPE MISMATCH ERRORDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Dim arrString = Join(arrayItems, ";")Window.returnvalue = arrStringDim strTemp = window.showModalDialog(……)Dim arrayItems = Split(strTemp, ";")
다차원 Array() 값 또는 개체가 있는 Array() 값이 returnValue 속성으로 전달되는 앞서 논의된 세 번째 시나리오에서 보안 업데이트 974455를 설치하지 않으려는 경우 한 가지 해결 방법을 구현할 수 있습니다. 이 시나리오에서 이 문제를 해결하려는 경우 JavaScript 함수를 사용하여 returnValue 속성을 설정할 수 있습니다. 이 JavaScript 함수는 VBScript 서브루틴 및 함수에서 사용할 수 있습니다. JavaScript 함수에 의해 설정된 returnValue 속성 값은 VBScript에서 사용할 수 있습니다.

예를 들어 다음 VBScript는 "유형 불일치" 스크립트 오류를 발생합니다.
// TYPE MISMATCH<script LANGUAGE=vbscript>Option ExplicitSub Window_OnLoadDim abc(1,2,3)Window.ReturnValue = abcEnd Sub</script>
JavaScript 함수를 기존의 VBScript와 함께 사용하면 "유형 불일치" 스크립트 오류 없이 returnValue 속성을 설정할 수 있습니다.
// 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>
현재 상태
Microsoft는 "적용 대상" 절에 나열된 Microsoft 제품에서 이 문제를 확인했습니다.
속성

문서 ID: 976949 - 마지막 검토: 12/01/2009 07:50:01 - 수정: 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
피드백