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

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

Για περισσότερες πληροφορίες σχετικά με το MS09-054, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης (Knowledge Base) της Microsoft:
974455MS09-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:
  • showModelessDialog()
    Το δεύτερο σενάριο αφορά τη μεταβίβαση μίας τιμής Array() ως παράμετρο στη μέθοδο showModelessDialog() στο VBScript. Η μέθοδος showModelessDialog() υποστηρίζει ένα απαιτούμενο όρισμα (sURL) και δύο προαιρετικά ορίσματα (vArguments και sFeatures). Η παράμετρος vArguments είναι μία παράμετρος τύπου VARIANT που προσδιορίζει τα ορίσματα που θα χρησιμοποιηθούν κατά την εμφάνιση του εγγράφου. Εάν ένας προγραμματιστής αποφασίσει να μεταβιβάσει μία Array() απευθείας στην προαιρετική παράμετρο vArguments, θα παρουσιαστεί ένα σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".

    Για περισσότερες πληροφορίες σχετικά με τη μέθοδο showModelessDialog, επισκεφθείτε την ακόλουθη ιστοσελίδα του Microsoft MSDN:
  • returnValue
    Το τρίτο σενάριο αφορά τη ρητή ρύθμιση της ιδιότητας returnValue ενός Αποκλειστικού παραθύρου διαλόγου. Η ιδιότητα returnValue είναι μία ιδιότητα ανάγνωσης/εγγραφής χωρίς προεπιλεγμένη τιμή. Σύμφωνα με την τεκμηρίωση στο MSDN, η ιδιότητα returnValue εφαρμόζεται μόνο στα παράθυρα τα οποία δημιουργούνται με τη μέθοδο showModalDialog(). Εάν ένας προγραμματιστής αποφασίσει να ορίσει ρητά την ιδιότητα vArguments ενός Αποκλειστικού παραθύρου διαλόγου σε μία τιμή Array() στο VBScript, θα παρουσιαστεί ένα σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".

    Για περισσότερες πληροφορίες σχετικά με την ιδιότητα return Value, επισκεφθείτε την ακόλουθη ιστοσελίδα του Microsoft MSDN:
Προς το παρόν, η 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 MISMATCHvReturn = window.showModalDialog("http://www.contoso.com", Array(1,2,3,4,5,6,7))
Το ακόλουθο VBScript θα μεταβιβάσει έναν πίνακα στις μεθόδους showModalDialog() ή showModelessDialog() χωρίς σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".
// 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 Mismatch)".
// TYPE MISMATCHDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Window.returnvalue = arrayItems
Όταν χρησιμοποιείτε τις λειτουργίες Join και Split του VBScript, μπορείτε να ορίσετε την ιδιότητα returnValue χωρίς να προκληθεί σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων (Type Mismatch)".
// NO TYPE MISMATCH ERRORDim arrayItemsarrayItems(0) = 1arrayItems(1) = 2arrayItems(2) = 3Dim arrString = Join(arrayItems, ";")Window.returnvalue = arrStringDim 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 ExplicitSub Window_OnLoadDim abc(1,2,3)Window.ReturnValue = abcEnd 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 ExplicitSub Window_OnLoadsetReturnValue()msgbox window.returnValueEnd Sub</script>
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα το οποίο παρουσιάζεται στα προϊόντα της Microsoft που αναφέρονται στην ενότητα "Ισχύει για".
Atribuudid

Artikli ID: 976949 – viimati läbi vaadatud: 12/01/2009 13:43:15 – redaktsioon: 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
Tagasiside