Εμφανίζεται ένα μήνυμα σφάλματος δέσμης ενεργειών VBScript "Ασυμφωνία τύπων (Type Mismatch)" στον Internet Explorer μετά την εγκατάσταση της αθροιστικής ενημέρωσης ασφαλείας 974455

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 976949 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

ΕΙΣΑΓΩΓΗ

Η αθροιστική ενημέρωση ασφαλείας 974455 για τον Internet Explorer (όπως περιγράφεται στο MS09-054) εισήγαγε επιπρόσθετους ελέγχους ασφαλείας "Τύπος (Type)" στις διάφορες μεθόδους ώστε να επιληφθεί θέματα ευπάθειας ασφαλείας που έχουν εντοπιστεί. Σε συγκεκριμένα σενάρια, αυτοί οι νέοι έλεγχοι ασφαλείας τύπου μπορεί να έχουν ως αποτέλεσμα σφάλματα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)" σε ιστοσελίδες που χρησιμοποιούν το VBScript ή σε ιστοσελίδες που χρησιμοποιούν συνδυασμό των VBScript και JavaScript.

Για περισσότερες πληροφορίες σχετικά με το MS09-054, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης (Knowledge Base) της Microsoft:
974455 MS09-054: Αθροιστική ενημέρωση ασφαλείας για τον Internet Explorer (US)

Συμπτώματα

Οι ιστοσελίδες που χρησιμοποιούν το VBScript ως γλώσσα δέσμης ενεργειών υπολογιστή-πελάτη και που χρησιμοποιούν τις μεθόδους showModalDialog() ή showModelessDialog() ενδέχεται να παρουσιάσουν σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)". Η Microsoft έχει εντοπίσει τα ακόλουθα τρία σενάρια στα οποία θα μπορούσε να προκληθεί ένα σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".
  • showModalDialog()
    Το πρώτο σενάριο αφορά τη μεταβίβαση μίας τιμής Array() ως παράμετρο στη μέθοδο showModalDialog() στο VBScript. Η μέθοδος showModalDialog() υποστηρίζει ένα απαιτούμενο όρισμα (sURL) και δύο προαιρετικά ορίσματα (vArguments και sFeatures). Η παράμετρος vArguments είναι μία παράμετρος τύπου VARIANT που προσδιορίζει τα ορίσματα που θα χρησιμοποιηθούν κατά την εμφάνιση του εγγράφου. Εάν ένας προγραμματιστής αποφασίσει να μεταβιβάσει μία Array() απευθείας στην προαιρετική παράμετρο vArguments, θα παρουσιαστεί ένα σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".

    Για περισσότερες πληροφορίες σχετικά με τη μέθοδο showModalDialog, επισκεφθείτε την ακόλουθη ιστοσελίδα του Microsoft MSDN:
    http://msdn.microsoft.com/el-gr/library/ms536759(VS.85).aspx
  • showModelessDialog()
    Το δεύτερο σενάριο αφορά τη μεταβίβαση μίας τιμής Array() ως παράμετρο στη μέθοδο showModelessDialog() στο VBScript. Η μέθοδος showModelessDialog() υποστηρίζει ένα απαιτούμενο όρισμα (sURL) και δύο προαιρετικά ορίσματα (vArguments και sFeatures). Η παράμετρος vArguments είναι μία παράμετρος τύπου VARIANT που προσδιορίζει τα ορίσματα που θα χρησιμοποιηθούν κατά την εμφάνιση του εγγράφου. Εάν ένας προγραμματιστής αποφασίσει να μεταβιβάσει μία Array() απευθείας στην προαιρετική παράμετρο vArguments, θα παρουσιαστεί ένα σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".

    Για περισσότερες πληροφορίες σχετικά με τη μέθοδο showModelessDialog, επισκεφθείτε την ακόλουθη ιστοσελίδα του Microsoft MSDN:
    http://msdn.microsoft.com/en-us/library/ms536761(VS.85).aspx/PathLink>
  • returnValue
    Το τρίτο σενάριο αφορά τη ρητή ρύθμιση της ιδιότητας returnValue ενός Αποκλειστικού παραθύρου διαλόγου. Η ιδιότητα returnValue είναι μία ιδιότητα ανάγνωσης/εγγραφής χωρίς προεπιλεγμένη τιμή. Σύμφωνα με την τεκμηρίωση στο MSDN, η ιδιότητα returnValue εφαρμόζεται μόνο στα παράθυρα τα οποία δημιουργούνται με τη μέθοδο showModalDialog(). Εάν ένας προγραμματιστής αποφασίσει να ορίσει ρητά την ιδιότητα vArguments ενός Αποκλειστικού παραθύρου διαλόγου σε μία τιμή Array() στο VBScript, θα παρουσιαστεί ένα σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".

    Για περισσότερες πληροφορίες σχετικά με την ιδιότητα return Value, επισκεφθείτε την ακόλουθη ιστοσελίδα του Microsoft MSDN:
    http://msdn.microsoft.com/el-gr/library/ms534371(VS.85).aspx
Προς το παρόν, η Microsoft δεν έχει παρατηρήσει να προκύπτουν σφάλματα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)" από την αθροιστική ενημέρωση ασφαλείας 974455 σε ιστοσελίδες που χρησιμοποιούν το JavaScript ως τη μοναδική γλώσσα δέσμης ενεργειών υπολογιστή-πελάτη. Φαίνεται ότι επηρεάζονται μόνο ιστοσελίδες που χρησιμοποιούν τη μέθοδο showModalDialog(), τη μέθοδο showModelessDialog() ή την ιδιότητα returnValue στο VBScript. Εάν η ιστοσελίδα περιέχει συνδυασμό των VBScript και JavaScript, ενδέχεται να επηρεαστεί στην περίπτωση που η ιστοσελίδα χρησιμοποιεί τις μεθόδους ή τις ιδιότητες που αναφέρθηκαν προηγουμένως στο VBScript ή στην περίπτωση που η ιστοσελίδα χρησιμοποιεί το αντικείμενο VBArray. Η χρήση του αντικειμένου VBArray δεν είναι συνηθισμένη και τα σενάρια που αφορούν το VBArray δεν καλύπτονται από αυτό το άρθρο της Γνωσιακής Βάσης (Knowledge Base).

Αιτία

Η αθροιστική ενημέρωση ασφαλείας MS09-054 για τον Internet Explorer κυκλοφόρησε ώστε να επιληφθεί θέματα ευπάθειας ασφαλείας που έχουν εντοπιστεί στον Internet Explorer. Ως τμήμα της αθροιστικής ενημέρωσης ασφαλείας, ο Internet Explorer εισήγαγε νέους ελέγχους για τη σκόπιμη διανομή των παραμέτρων τύπου VARIANT σε επικίνδυνους τύπους δεδομένων. Οι επιπρόσθετοι έλεγχοι ασφαλείας θέτουν επιπρόσθετους περιορισμούς ασφαλείας στις παραμέτρους του τύπου VARIANT που μεταβιβάζονται ως μέρος των μεταβλητών ελεγχόμενων από τον χρήστη με σκοπό να προστατεύσουν τον χρήστη από συγκεκριμένα είδη επιθέσεων. Αυτοί οι επιπρόσθετοι έλεγχου ενδέχεται να επηρεάσουν τα αξιόπιστα σενάρια περιήγησης που χρησιμοποιούν τύπους δεδομένων VARIANT.

Προτεινόμενη αντιμετώπιση

Για να επιλύσετε αυτό το πρόβλημα, εγκαταστήστε την ενημέρωση 976749 αφού εγκαταστήσετε την ενημέρωση ασφαλείας 974455. Για περισσότερες πληροφορίες σχετικά με αυτό το θέμα, κάντε κλικ στον ακόλουθο αριθμό άρθρου για να δείτε το άρθρο στη Γνωσιακή Βάση (Knowledge Base) της Microsoft:
976749 Είναι διαθέσιμη μια ενημερωμένη έκδοση για τον Internet Explorer η οποία επιλύει ζητήματα που προκύπτουν μετά την εφαρμογή της ενημερωμένης έκδοσης ασφαλείας 974455 (MS09-054)

Σημαντικό Μην εγκαταστήσετε την ενημέρωση 976749 εάν δεν έχετε εγκαταστήσει την ενημέρωση ασφαλείας 974455. Εάν εγκαταστήσετε την ενημέρωση 976749 χωρίς να εγκαταστήσετε πρώτα την ενημέρωση ασφαλείας 974455, ο Internet Explorer ενδέχεται να μην λειτουργεί σωστά. Εάν συμβεί αυτό, καταργήστε την εγκατάσταση της ενημέρωσης 976749, εγκαταστήστε την ενημέρωση ασφαλείας 974455 και στη συνέχεια εγκαταστήστε ξανά την ενημέρωση 976749.

Εναλλακτικός τρόπος αντιμετώπισης

Συνιστούμε να συνεχίσετε την εφαρμογή της αθροιστικής ενημέρωσης ασφαλείας 974455 και να εγκαταστήσετε την ενημέρωση 976749 εάν αντιμετωπίσετε τα συμπτώματα τα οποία περιγράφονται στο άρθρο αυτό. Οι πελάτες που θα αποφασίσουν να καταργήσουν την αθροιστική ενημέρωση ασφαλείας θα θέσουν τα συστήματά τους σε κίνδυνο.

Για την πρώτη και τη δεύτερη περίπτωση, οι οποίες αναφέρθηκαν στην ενότητα "Συμπτώματα", μπορείτε να εφαρμόσετε μια επίλυση εάν δε θέλετε να εγκαταστήσετε την ενημέρωση ασφαλείας 974455. Για να επιλύσετε αυτό το θέμα, δηλώστε ρητά τη μεταβλητή Array() σε μεταβλητή VBScript. Οι πίνακες μπορούν να μεταβιβαστούν στις μεθόδους showModalDialog() ή showModelessDialog() χωρίς σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".

Για παράδειγμα, το ακόλουθο VBScript θα προκαλέσει ένα σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".
// TYPE MISMATCH
vReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Το ακόλουθο VBScript θα μεταβιβάσει έναν πίνακα στις μεθόδους showModalDialog() ή showModelessDialog() χωρίς σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".
// NO TYPE MISMATCH ERROR
Dim myArray
myArray=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 Mismatch)".

// TYPE MISMATCH
Dim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.returnvalue = arrayItems
Όταν χρησιμοποιείτε τις λειτουργίες Join και Split του VBScript, μπορείτε να ορίσετε την ιδιότητα returnValue χωρίς να προκληθεί σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".

// 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, ";")

Για την τρίτη περίπτωση, η οποία αναφέρθηκε προηγουμένως, κατά το οποίο μεταβιβάζονται στην ιδιότητα returnValue τιμές Array() πολλαπλών διαστάσεων ή τιμές Array() που έχουν αντικείμενα, μπορείτε να εφαρμόσετε μια επίλυση εάν δε θέλετε να εγκαταστήσετε την ενημέρωση ασφαλείας 974455. Για να επιλύσετε το ζήτημα στην περίπτωση αυτή, μπορείτε να χρησιμοποιήσετε μία συνάρτηση JavaScript για να ορίσετε την ιδιότητα returnValue. Αυτή η λειτουργία JavaScript είναι διαθέσιμη σε υπορουτίνες και λειτουργίες του VBScript. Οποιαδήποτε τιμή της ιδιότητας returnValue ορίζεται από μία λειτουργία JavaScript θα είναι διαθέσιμη στο VBScript.

Για παράδειγμα, το ακόλουθο VBScript προκαλεί σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".
// TYPE MISMATCH
<script LANGUAGE=vbscript>
Option Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End Sub
</script>
Όταν χρησιμοποιείτε μία λειτουργία JavaScript μαζί με ένα υπάρχον VBScript, μπορείτε να ορίσετε την ιδιότητα returnValue χωρίς να προκληθεί σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".
// 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>

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα το οποίο παρουσιάζεται στα προϊόντα της Microsoft που αναφέρονται στην ενότητα "Ισχύει για".

Ιδιότητες

Αναγν. άρθρου: 976949 - Τελευταία αναθεώρηση: Τρίτη, 1 Δεκεμβρίου 2009 - Αναθεώρηση: 3.1
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Windows Internet Explorer 8 στις ακόλουθες πλατφόρμες
    • 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 στις ακόλουθες πλατφόρμες
    • 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 στις ακόλουθες πλατφόρμες
    • 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 στις ακόλουθες πλατφόρμες
    • 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 στις ακόλουθες πλατφόρμες
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Datacenter Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows 2000 Server
Λέξεις-κλειδιά: 
kbcode kbtshoot kbbug kbexpertiseinter kbsecurity kbsecvulnerability kbsurveynew KB976949

Αποστολή σχολίων

 

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