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

ΕΙΣΑΓΩΓΗ

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

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

Συμπτώματα

Ιστοσελίδες που χρησιμοποιούν το VBScript ως γλώσσα δεσμών ενεργειών πλευράς προγράμματος-πελάτη και να χρησιμοποιούν το showModalDialog() ή τις μεθόδους showModelessDialog() ενδέχεται να αντιμετωπίσετε ένα σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων". Η Microsoft έχει εντοπίσει τα ακόλουθα τρία σενάρια στα οποία θα μπορούσε να δημιουργηθεί ένα σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων":

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


    Για περισσότερες πληροφορίες σχετικά με τη μέθοδο showModalDialog, επισκεφθείτε την ακόλουθη τοποθεσία του Microsoft MSDN στο Web:

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



    Για περισσότερες πληροφορίες σχετικά με τη μέθοδο showModelessDialog, επισκεφθείτε την ακόλουθη τοποθεσία του Microsoft MSDN στο Web:

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


    Για περισσότερες πληροφορίες σχετικά με την ιδιότητα τιμή επιστροφής , επισκεφθείτε την ακόλουθη τοποθεσία του Microsoft MSDN στο Web:

Προς το παρόν, η Microsoft δεν έχει παρατηρήσει "Ασυμφωνία τύπων" σφάλματα δέσμης ενεργειών που προκύπτουν από την αθροιστική ενημερωμένη έκδοση 974455 σε ιστοσελίδες που χρησιμοποιούν το JavaScript ως τους αποκλειστικό γλώσσα δεσμών ενεργειών πλευράς προγράμματος-πελάτη. Μόνο οι ιστοσελίδες που χρησιμοποιούν τη μέθοδο showModalDialog(), η showModelessDialog() μέθοδος ή η ιδιότητα returnValue στο VBScript φαίνεται να επηρεαστούν. Εάν η ιστοσελίδα περιέχει συνδυασμό των VBScript και JavaScript, ενδέχεται να επηρεαστεί αν η ιστοσελίδα χρησιμοποιεί τις μεθόδους ή τις ιδιότητες που αναφέρθηκαν προηγουμένως στο VBScript ή αν η ιστοσελίδα χρησιμοποιεί το αντικείμενο VBArray. Χρήση του αντικειμένου VBArray είναι ασυνήθιστο και τα σενάρια που αφορούν το VBArray δεν καλύπτονται από το παρόν άρθρο της Γνωσιακής Βάσης της Microsoft.

Αιτία

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

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

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

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


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

Συνιστούμε να συνεχίσετε να εφαρμόζετε την αθροιστική ενημέρωση ασφαλείας 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 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 MISMATCHDim arrayItems
arrayItems(0) = 1
arrayItems(1) = 2
arrayItems(2) = 3
Window.returnvalue = arrayItems

Όταν χρησιμοποιείτε τις συναρτήσεις Join και Split VBScript, μπορείτε να ορίσετε την ιδιότητα returnValue χωρίς τη δημιουργία ενός σφάλματος δέσμης ενεργειών "Ασυμφωνία τύπων".

// NO TYPE MISMATCH ERRORDim 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, ";")


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



Για παράδειγμα, το ακόλουθο VBScript προκαλεί σφάλμα δέσμης ενεργειών "Ασυμφωνία τύπων".

// TYPE MISMATCH<script LANGUAGE=vbscript>
Option Explicit
Sub Window_OnLoad
Dim abc(1,2,3)
Window.ReturnValue = abc
End 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 Explicit

Sub Window_OnLoad
setReturnValue()
msgbox window.returnValue
End Sub
</script>

Κατάσταση

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

Αναγνωριστικό άρθρου: 976949 - Τελευταία αναθεώρηση: 13 Ιαν 2017 - Αναθεώρηση: 2

Σχόλια