• Τι είναι το ActiveX, πώς χρησιμοποιείται, μύθοι και πραγματικότητα , γιατί δεν φεύγει ο ΙΕ

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

    Δυναμικές Βιβλιοθήκες

    Το πρόβλημα ξεκινάει από τις εποχές των παλαιών λειτουργικών συστημάτων, δηλαδή του DOS και ίσως και πιο πίσω. Κάθε εφαρμογή κάνει κάτι από μόνη της (π.χ. ένα calculator κάνει πράξεις), ορισμένες όμως φορές μία εφαρμογή κάνει κάτι ίδιο με μία άλλη κοινή εφαρμογή. Για παράδειγμα αν γυρίσουμε πίσω στην εποχή του DOS βρίσκουμε προγράμματα τα οποία εκείνη την εποχή χρησιμοποιούσαν όλα την «εξτρα» μνήμη που είχε ο υπολογιστής. Αντί όμως κάθε εφαρμογή να υλοποιεί τον δικό της τρόπο να παίρνει την μνήμη, κάτι που θα μας πήγαινε σε ασυμβατότητες και κρασαρίσματα του υπολογιστή, χρησιμοποιούσαν όλοι μία κοινή βιβλιοθήκη, το HIMEM.SYS. Με αυτόν τον τρόπο η Ms και η κάθε Μs της εποχης ασχολείτο η ίδια με το πρόβλημα ενώ το κάθε πρόγραμμα είχε πλέον ένα σίγουρο κα ι ασφαλή τρόπο να βλέπει την έξτρα μνήμη που χρειάζεται.

    Στα Windows καθώς και στο Linux ή στο OSX κάθε εφαρμογή κάνει το δικό της πράγμα για το οποίο είναι γραμμένη, πολλές εφαρμογές όμως κάνουν κάτι κοινό, π.χ. να κάνουν update από το Internet, να εκτυπώνουν στον ίδιο εκτυπωτή, να προβάλουν 3D δεδομένα στο ίδιο framework (DirectX/ OpenGL) κλπ. Για να μην κουβαλάει η κάθε εφαρμογή τον ίδιο κώδικα, στα Windows υπάρχει ένα set από διαθέσιμο κώδικα, γνωστο σαν Application Programming Interface στο οποίο έχουν πρόσβαση όλα τα προγράμματα. Αυτά είναι τα γνωστά μας αρχεία DLL.

    To πρόβλημα των DLL

    Το βασικό πρόβλημα των DLL ήταν ότι κάθε εφαρμογή εγκαθιστούσε τα δικά της που πιθανόν ήταν μή συμβατά με άλλα συστήματα ή προγράμματα. Επιπλέον η τοποθεσία στον σκληρό δίσκο που έμπαιναν αυτά τα αρχεία πολλές φορές έμπλεκε με άλλα αρχεία με ίδιο όνομα, το γνωστό name collision ή DLL Hell. Το αποτέλεσμα είναι, όταν τα Windows κυριάρχησαν στην αγορά, να υπάρχουν πολλές τέτοιες ασυμβατότητες μεταξύ των
    προγραμμάτων.

    Επιπλέον, όταν για κάποιο λόγο δεν υπήρχε ένα DLL εκεί που περίμενε να το βρεί ένα πρόγραμμα απλά το πρόγραμμα δεν έτρεχε, ακόμα και αν το DLL δεν του ήταν 100% απαραίτητο για να λειτουργήσει.

    Η λύση του ActiveX

    Η τεχνολογία ActiveX κάνει διαθέσιμη, όπως και με τα DLL, κώδικα στο σύστημα. Αντίθετα όμως με τα DLL τα αρχεία του ActiveX μπορούν να τοποθετηθούν οπουδήποτε στο σύστημα και στη συνέχεια καταγράφεται ο προορισμός τους μαζί με το τί κάνουν στο HKEY_CLASSES_ROOT. Με μία διαδικασία σχετικά απλή για τους προγραμματιστές, όταν κάποιος θέλει να χρησιμοποιήσει ένα διαθέσιμο τμήμα κώδικα, απλα καλει το ActiveX που θέλει (το οποίο ξεχωρίζει μοναδικά απόκάποιο άλλο με ένα 128-bit αριθμό που λέγεται CLSID). Στο άρθρο μου για το Win32 API εξηγώ ότι προγραμματιστικό χρειάζεται για να κατανοήσει κάποιος την προγραμματιστική διαδικασία αν ενδιαφέρεται. (http://www.adslgr.com/forum/showthread.php?t=220221).

    Το αποτέλεσμα είναι για παράδειγμα ότι π.χ. ένας printer driver εγκαθίσταται στο λειτουργικό. Αντί κάθε πρόγραμμα να περιέχει τον κώδικα που χρειάζεται για να εκτυπώσεις (και άρα να ξαναγραφτεί για να υποστηρίζει τον συγκεκριμένο εκτυπωτή όπως γινόταν στο DOS) , καλεί απλά το ActiveX του εκτυπωτη (ορισμένο από τα Windows) το οποίο επιτρέπει να ρυθμίσει και να εκτυπώσει ο χρήστης με μια διαδικασία transparent και για το πρόγραμμα και για τον εκτυπωτή.

    Άλλο παράδειγμα, όταν κάποιος έχει εγκατεστημένο στο σύστημά του το Excel, μπορεί από μια τρίτη εφαρμογή να το χρησιμοποιήσει για ένα λογισμικό φύλλο. Καλεί το ActiveX του Excel (το οποίο και επιστρέφεται μόνο όταν υπάρχει το Excel , αλλιώς φυσικά δεν γίνεται) και χρησιμοποιεί τις δυνατότητες του Excel.

    Κάποιος θα πεί για παράδειγμα ότι για κάτι απλό όπως την εμφάνιση ενός μυνήματος δεν χρησιμοποιείται ActiveX. Αυτό δεν ισχύει, και για τα ποιο μικρά θέματα όπως την δημιουργία συντόμευσης, τη σύνδεση στο Internet από οποιονδήποτε browser χρησιμοποιείται ActiveX με τον ένα ή τον άλλο τρόπο.

    Πού υπάρχει το ActiveX

    Στο 100% των .NET/WPF εφαρμογώ και στο 99% των άλλων εφαρμογών. Οτι και να κάνει κάποιος θα χρησιμοποιηθεί το ActiveX σε κάποια περίσταση, ακόμα και για την δημιουργία ενός φακέλου χρησιμοποιείται το ΙStorage για παράδειγμα το οποίο το δίνει ο explorer με τον Internet explorer. To Flash Player είναι ActiveX control - αναρωτιέμαι πως θα βλέπατε video στον FireFox χωρίς αυτό.

    Επομένως είναι κωμικό το να λέμε ότι θέλουμε Windows χωρίς ActiveX, μια τέτοια έκφραση ισοδυναμεί με το να λέμε ότι δεν θέλουμε Windows.

    Τι σχέση έχει το ActiveX με την Java?
    Καμία. Ένα πρόγραμμα που τρέχει μέσω του Internet Explorer ή του Firefox ή του Chrome σαν ActiveX control δεν διαφέρει σε τίποτα από οποιαδήποτε άλλη εφαρμογή. Εχει τα ίδια permissions με αυτά που έχει και ο browser (τώρα τελευταία χρησιμοποιείται η τεχνική του Sandboxing η οποία όμως δεν δουλεύει πλήρως). Στην Java τα πραγματα είναι τελείως διαφορετικά μια που είναι προγραμματα που τρέχουν στην Java Virtual Machine και δεν είναι κανονικός κώδικας με το ActiveX.

    Tα προβλήματα του ActiveX

    Επειδή το ActiveX είναι απλά ένα πρωτόκολλο και επειδή χρησιμοποιείται από προγράμματα, μπορεί να χρησιμοποιηθεί και από Ιους. Οταν πηγαίνετε σε ένα πορνο site και σου λέει για ActiveX για “Instant Access” , τί ειναι, ένας dialer που παλιότερα θα μας έκανε ζημιά. Δεν φταίει όμως για ένα κακόβουλο πρόγραμμα ούτε ο IE, ούτε τα Windows ούτε το ActiveX. Για την ασφάλεια σας μην τρέχετε άγνωστα ActiveX στοιχεία όπως δεν θα τρέχατε ένα άγνωστο downloaded πρόγραμμα. Το ActiveX δεν είναι περισσότερο ή λιγότερο επικίνδυνο. Να τονίσω επίσης ότι σε οποιοδήποτε άλλο browser υπάρχει επίσης το ActiveX για να μπορούν να συνεργάζονται με τα Windows.

    Ο μύθος του IE

    Ο Internet Explorer σαν εφαρμογή (IEXPLORE.EXE) είναι απλα ένα frontend που κάνει χρήση της ActiveX τεχνολογίας. Αν κάποιος βγάλεi τον IE από το σύστημα απλά θα διαγράψει το IEXPLORE.EXE. Ολα τα άλλα θα παραμείνουν και δεν διαγράφονται, διότι αν διαγραφούν την άλλη στιγμή τα Windows δεν θα λειτουργούν εκτός από ελάχιστες εφαρμογές. Επομένως αυτά περι αφαίρεσης του IE από τα Windows και περί αθέμιτου ανταγωνισμού δεν ευσταθούν, το μόνο που θα ξηλωθεί είναι η συντόμευση, πράγμα που έτσι και αλλιώς θα το έκανε κάποιος που θέλει να καταργεί τον IE.

    Επειδή οι βιβλιοθήκες που περιέχουν την Trident (την μηχανή που χρησιμοποιεί ο IE) είναι διαθέσιμες σε όλα τα Windows, αυτό εξασφαλίζει ότι 100% θα τρέχει η οποιαδήποτε εφαρμογή που τις χρησιμοποιεί. Αν τις αφαιρούσαμε προς χάριν ορισμένων εταιριών, τότε εκατοντάδες καλές εφαρμογές Windows δεν θα μπορούσαν πλέον να τρέξουν.

    Τέλος να σημειώσω ότι τo αν η Microsoft κατακρίνεται για τον τρόπο που έφτιαξε τοσύστημα, δεν μπορώ ούτε θέλω να το κρίνω. Αφού τα Windows έχουν το μερίδιο της αγοράς, είναι επιτυχημένο και κάτι επιτυχημένο δεν μπορείς να το κρίνεις αρνητικά αν η εναλλακτική σου πρόταση είναι αποτυχημένη και απορριπτέα από τον κόσμο. Αν δε σου αρέσει, δεν τα αγοράζεις και δεν τα χρησιμοποιείς - απλα.

    Αυτά τα ολίγα.

    Πηγές
    http://en.wikipedia.org/wiki/ActiveX
    http://msdn.microsoft.com/en-us/library/aa751972.aspx
    Αυτό το άρθρο δημοσιεύθηκε πρώτα στο forum με θέμα: Τι είναι το ActiveX, πώς χρησιμοποιείται, μύθοι και πραγματικότητα , γιατί δεν φεύγει ο ΙΕ Δημοσιεύθηκε από turboirc Δείτε την αρχική δημοσίευση
    Σχόλια 18 Σχόλια
    1. Το avatar του μέλους Papados
      Papados -
      Πολύ καλό αρθρο. Μπράβο.
      Αυτό με τον ΙΕ πραγματικά δεν το ήξερα.

      Και πάλι μπράβο
    1. Το avatar του μέλους chat1978
      chat1978 -
      Παράθεση Αρχικό μήνυμα από turboirc Εμφάνιση μηνυμάτων
      Επειδή οι βιβλιοθήκες που περιέχουν την Trident (την μηχανή που χρησιμοποιεί ο IE) είναι διαθέσιμες σε όλα τα Windows, αυτό εξασφαλίζει ότι 100% θα τρέχει η οποιαδήποτε εφαρμογή που τις χρησιμοποιεί. Αν τις αφαιρούσαμε προς χάριν ορισμένων εταιριών, τότε εκατοντάδες καλές εφαρμογές Windows δεν θα μπορούσαν πλέον να τρέξουν.
      Και εγώ αυτο δεν το κατάλαβα.
      Μπορείς να το εξηγήσεις περισσότερο.
      Ευχαριστώ

      Επιτέλους να τα πει και ένας...
    1. Το avatar του μέλους parsifal
      parsifal -
      Παράθεση Αρχικό μήνυμα από turboirc Εμφάνιση μηνυμάτων
      To Flash Player είναι ActiveX control - αναρωτιέμαι πως θα βλέπατε video στον FireFox χωρίς αυτό.
      Χμμμμ... Σίγουρα είναι έτσι;

      http://support.mozilla.com/en-US/kb/Activex
      http://en.wikipedia.org/wiki/NPAPI
    1. Το avatar του μέλους turboirc
      turboirc -
      Την τελευταία φορά που είδα τον firefox χρησιμοποιούσε AX, τώρα μπορεί να έχεις δίκιο ίσως έχει αλλάξει αλλά και το NPAPI η ίδια ιστορία είναι.
    1. Το avatar του μέλους WAntilles
      WAntilles -
      Να επισημάνω εδώ κάποια πράγματα-συλλογισμούς που απλά δεν στέκουν - και τα έχω πει πολλές φορές:

      To πρόβλημα των DLL

      Το βασικό πρόβλημα των DLL ήταν ότι κάθε εφαρμογή εγκαθιστούσε τα δικά της που πιθανόν ήταν μή συμβατά με άλλα συστήματα ή προγράμματα. Επιπλέον η τοποθεσία στον σκληρό δίσκο που έμπαιναν αυτά τα αρχεία πολλές φορές έμπλεκε με άλλα αρχεία με ίδιο όνομα, το γνωστό name collision ή DLL Hell. Το αποτέλεσμα είναι, όταν τα Windows κυριάρχησαν στην αγορά, να υπάρχουν πολλές τέτοιες ασυμβατότητες μεταξύ των
      προγραμμάτων.

      Επιπλέον, όταν για κάποιο λόγο δεν υπήρχε ένα DLL εκεί που περίμενε να το βρεί ένα πρόγραμμα απλά το πρόγραμμα δεν έτρεχε, ακόμα και αν το DLL δεν του ήταν 100% απαραίτητο για να λειτουργήσει.
      Ουδεμία σχέση με την πραγματικότητα.

      Σαφώς και γίνεται - είναι εφικτό - αλλά και εφαρμόζεται σε άλλα λειτουργικά συστήματα που είναι ΣΟΒΑΡΑ και έχουν ΣΟΒΑΡΟΥΣ developers και εταιρίες από πίσω - π.χ. UNIX/Linux - να υπάρχει ΜΙΑ ΜΟΝΟ έκδοση και αντίγραφο κάποιας βιβλιοθήκης σε όλο το σύστημα.

      Απλά στα Windows η Microsoft ουδέποτε ενδιαφέρθηκε να εφαρμόσει αυστηρά κάποιες προδιαγραφές στοιχειώδους ποιότητας.

      Σαφώς και μπορεί να υπάρχει μία μόνο έκδοση μιας βιβλιοθήκης (π.χ. MSVCRT80.DLL ή MFC800.DLL) σε όλο το σύστημα.

      Σαφώς και τα προγράμματα ξέρουν πού να τις αναζητήσουν -> γι' αυτό υπάρχουν οι μεταβλητές περιβάλλοντος -> π.χ. %SYSTEMDIR%.

      Αλλά ουδέποτε η Microsoft έκανε υποχρεωτική τη χρήση τους και να απαγορεύσει τη χρήση fixed paths στον κώδικα -> ούτε στη Registry έκανε υποχρεωτική τη χρήση τους.

      Για τον ίδιο λόγο που ουδέποτε έκανε υποχρεωτική τη χρήση unicode - άλλο θέμα αυτό αλλά με τις ίδιες αιτίες.

      Η Microsoft λοιπόν ανέκαθεν μπορούσε, ποτέ δεν ήθελε.

      Άρα λοιπόν ουδέποτε υπήρχε πραγματικό τέτοιο πρόβλημα στα Windows.

      Η Microsoft ΗΘΕΛΕ και το δημιούργησε.

      Αυτά για να επαναφέρουμε κάποια πράγματα στη σωστή τους πραγματική διάσταση.

      Τώρα για τα υπόλοιπα θέματα του άρθρου, σύγχρονοι όροι της πληροφορικής όπως "script kiddie", "I love you", "Melissa" κλπ., υπάρχουν χάρις στα "φοβερά" ActiveX.
    1. Το avatar του μέλους flamelab
      flamelab -
      Παράξενο αυτό με τον Flash, πώς γίνεται και τρέχει σε Linux/OSX αφού δεν υποστηρίζουν ActiveX

      Κατά τ'άλλα διαφωτιστικό το άρθρο για το ActiveX. Απλά δεν είναι το ότι υπάρχει το κακό, αλλά το ότι δεν ήταν ποτέ καλορυθμισμένος στον Internet Explorer.
    1. Το avatar του μέλους turboirc
      turboirc -
      Εννοούσα για το Flash στα Windows. Σε άλλα λειτουργικά προφανώς είναι άλλη η φιλοσοφία - για αυτό και υπάρχει διαφορετική εγκατάσταση.
    1. Το avatar του μέλους parsifal
      parsifal -
      Ακόμη και στα Windows υπάρχει διαφορετική εγκατάσταση, με διαφορετικό (κοινό) installer για Firefox/Opera/Safari και παράγωγά τους απ' ο,τι για Internet Explorer. Εδώ, επιλέγοντας IE κατεβαίνει το install_flash_player_ax.exe ενώ επιλέγοντας Firefox το install_flash_player.exe.

      Επιπλέον, εισάγοντας στην address bar του FF το string about:plugins, βλέπουμε:

      Συνημμένο Αρχείο 51688

      ενώ στον IE από το μενού Tools > Manage Add-ons > Enable or Disable Add-ons... > Show: Downloaded ActiveX controls:

      Συνημμένο Αρχείο 51689
    1. Το avatar του μέλους turboirc
      turboirc -
      Το πιο πιθανό είναι ότι το άλλαξαν τότε. Anyway η τεχνολογία είναι ίδια και as safe/unsafe as ActiveX ( http://en.wikipedia.org/wiki/NPAPI -> Security) και με το ίδιο background δηλαδή την χρήση ενός προγράμματος από κάποιο άλλο - επομένως όσα συστήματα έχουν το NPAPI ουσιαστικά έχουν μια διαφορετική έκδοση του ActiveX.
    1. Το avatar του μέλους parsifal
      parsifal -
      Παράθεση Αρχικό μήνυμα από turboirc Εμφάνιση μηνυμάτων
      Το πιο πιθανό είναι ότι το άλλαξαν τότε.
      Το πιο πιθανό είναι ότι ουδέποτε ο Firefox και οι προκάτοχοί του από το codebase των οποίων προήλθε (Phoenix, Netscape Navigator) χρησιμοποιούσαν Flash μέσω ActiveX.

      Εξάλλου, κατεβάζοντας τον Macromedia Flash Player 2 (1997), βλέπουμε στο readme.txt τα παρακάτω:

      The following files are available for your use:

      Flash Player 2
      --------------
      Windows 9x/ME/NT/2000/XP
      - Internet Explorer: SwFlash.ocx
      - Plugin-based browsers: Shockwave_Flash_Installer.exe

      Το NPAPI έχει κάμποσα χρονάκια στην πλάτη του.
    1. Το avatar του μέλους turboirc
      turboirc -
      Αν θυμάμαι καλά η αρχική έκδοση του Firefox δεν ήταν έτσι. Δεν έχει σημασία όμως, πρόκειται για παρόμοια τεχνολογία με το ActiveX και για την ακρίβεια, λιγότερο ασφαλής στα Windows από το ActiveX δεδομένου του ότι, ότι δεν έχει δοκιμαστεί επαρκώς δεν μπορεί να θεωρείται ασφαλές, και η συγκεκριμένη τεχνολογία δεν χρησιμοποιείται στα Windows παρά μόνο από ελάχιστα projects.
    1. Το avatar του μέλους politis164
      politis164 -
      Το ActiveX δεν είναι περισσότερο ή λιγότερο επικίνδυνο. Να τονίσω επίσης ότι σε οποιοδήποτε άλλο browser υπάρχει επίσης το ActiveX για να μπορούν να συνεργάζονται με τα Windows.
      Να υποθέσω ότι τα εκατοντάδες γνωστά ActiveX exploits που έχει στην ιστορία της η Microsoft δεν σου είναι γνωστά ή υποθέτεις ότι υπάρχουν αντιστοίχως εκατοντάδες γνωστά exploits σε NPAPI; Επίσης, οι μηχανές Mozilla δεν υποστηρίζουν εγγενώς ActiveX controls στο layout, μήπως είναι και αυτό ασήμαντη λεπτομέρεια;

      Παρεμπιπτόντως, ποτέ δεν είδα κάποιον να θέλει να φύγει η τεχνολογία ActiveX από τα Windows, αντιθέτως είδα πολλούς να προειδοποιούν τη Microsoft ότι θα είναι καταστροφή στο Internet. Το ποιος είχε δίκιο και ποιος παλεύει ακόμη να κάνει τον IE+ActiveX controls (στο layout μέρος, όπου χρησιμοποιούνται όπως τα plugins στο Firefox) ασφαλή στο Internet είναι πια προφανές, όπως και ότι δεν καταρρίπτεις μόνο μύθους, αλλά και δημιουργείς νέους...
    1. Το avatar του μέλους turboirc
      turboirc -
      Το άρθρο μου αναλύει τι είναι το ActiveX. Δεν έχω την διάθεση να ασχοληθώ με καμία άλλη γνώμη για το τι είναι (ή τι νομίζει κάποιος ότι είναι ή τι θέλει να λέει σκόπιμα ότι είναι) ούτε να επιχειρηματολογήσω για να πείσω κάποιον που δεν του αρέσει για να πλεονεκτήματά του ή τα μειονεκτήματά του σε σχέση με το NPAPI ή με οποιοδήποτε άλλο.
    1. Το avatar του μέλους politis164
      politis164 -
      Εγώ προηγουμένως, όπως και άλλοι πριν από εμένα, διόρθωσαν ορισμένες λανθασμένες απόψεις σου για την τεχνολογία ActiveX (αν θες, παραθέτω και άλλες ανακρίβειες και λάθη). Αυτά δεν έχουν σχέση με όποια άποψη έχω ή νομίζεις ότι έχω για την τεχνολογία αυτή, μπορείς πιο απλά να πεις ότι η άποψή σου είναι θέσφατο, οπότε δεν έχει πλέον νόημα η συζήτηση. Τότε όμως δεν έχεις δικαίωμα να αναφέρεσαι σε κατάρριψη μύθων και τα υπόλοιπα αστεία.
    1. Το avatar του μέλους AgentWolf
      AgentWolf -
      Πολύ καλό το άρθρο σου και κατατοπιστικότατο...

      Μια καλή ιδέα βέβαια, θα ήταν να κάνεις κάποιες μικροδιορθοσούλες που σου προτείνουν οι συμφορουμίτες με τα σχόλιά τους, έτσι ώστε να γίνει άψογο.
    1. Το avatar του μέλους thn nila mou...
      ευχαριστουμε, ναι αν μπορεις κανε update στο αρθρο. αλλα ηταν πραγματικα ενδιαφερον.
    1. Το avatar του μέλους Παπι
      Παπι -
      Αλλο ενα πολυ καλο αρθρο απο τον turboirc.
      1) Πολυ καλη δουλεια
      2) Πολυ ευχαριστο κειμενο.
      3) Αν και παλιο το αρθρο, επιβαλεται να το σχολιασω.
    1. Το avatar του μέλους Xarxas
      Xarxas -
      Παράθεση Αρχικό μήνυμα από turboirc Εμφάνιση μηνυμάτων
      Εννοούσα για το Flash στα Windows. Σε άλλα λειτουργικά προφανώς είναι άλλη η φιλοσοφία - για αυτό και υπάρχει διαφορετική εγκατάσταση.
      ναι, γιατί αν προσέξετε σε πολλά downloads, υπάρχει άλλο πακέτο εγκατάστασης σε προγράμματα για linux και άλλο για windows