Βασικές Έννοιες

6.2 Ασφάλεια στο World Wide Web

6.2.1 Εισαγωγή

Το World Wide Web είναι ένα σύστημα ανταλλαγής πληροφοριών μέσα από το Internet. Είναι κατασκευασμένο από ειδικά προγράμματα που καλούνται Web servers, που διαχειρίζονται και διανέμουν τις πληροφορίες στο Διαδίκτυο, και από τους Web browsers που βοηθούν τους χρήστες να αποκτούν πρόσβαση στις πληροφορίες που είναι αποθηκευμένες στους Web servers και να τις προβάλουν στην οθόνη του χρήστη.

Το World Wide Web αρχικά αναπτύχθηκε για να βοηθήσει την κοινότητα των φυσικών στην ανταλλαγή και δημοσιοποίηση των ερευνών τους. Η χρήση του Web επέτρεψε στους φυσικούς να παρακάμψουν την χρονοβόρα και ακριβή διαδικασία της δημοσιοποίησης των ερευνητικών αποτελεσμάτων σε επιστημονικές εφημερίδες. Η παράκαμψη των εκδοτικών οίκων και των εφημερίδων παραμένει μία από τις σπουδαιότερες διευκολύνσεις που παρέχει το Web σήμερα, τη στιγμή που χιλιάδες εταιρίες, πανεπιστήμια, κυβερνητικοί οργανισμοί ακόμα και απλοί χρήστες επιθυμούν να διαφημίσουν στο ευρύ κοινό πληροφορίες για τα προϊόντα και τις υπηρεσίες που προσφέρουν. Επίσης, πολλοί οργανισμοί χρησιμοποιούν το Web για να διανείμουν εμπιστευτικά έγγραφα στους συνεργάτες και πελάτες τους.

Άλλη μία χρήση του Web περιλαμβάνει την ενσωμάτωση προγραμμάτων στις ηλεκτρονικές σελίδες του. Τα προγράμματα αυτά δημιουργούνται με το πρωτόκολλο Common Gateway Interface (CGI). Τα CGI scripts μπορούν να είναι εξαιρετικά απλά, όπως για παράδειγμα ένας μετρητής που αυξάνει κάθε φορά που κάποιος επισκέπτεται την σελίδα ή μπορούν να είναι και αρκετά πολύπλοκα, όπως για παράδειγμα η αγορά προϊόντων και η χρηματικές συναλλαγές μέσα από το Web.

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

Όπως καταλαβαίνουμε, το World Wide Web είναι μια από της πιο χρησιμοποιούμενες και διασκεδαστικές εφαρμογές του Internet. Παρ' όλα αυτά, θέτει σημαντικά προβλήματα ασφαλείας, τα οποία παραθέτονται παρακάτω:

  1. Ένας εισβολέας μπορεί να εκμεταλλευτεί ατέλειες (bugs) του Web server ή των CGI scripts για να αποκτήσει μη εγκεκριμένη πρόσβαση σε αρχεία του server ή ακόμα να αποκτήσει το έλεγχο ολόκληρου του υπολογιστή.
  2. Εμπιστευτικές πληροφορίες που βρίσκονται αποθηκευμένες στον Web server μπορεί να διανεμηθούν σε μη εγκεκριμένα άτομα.
  3. Εμπιστευτικές πληροφορίες που ανταλλάσσονται μεταξύ του Web server και του browser μπορεί να υποπέσουν σε υποκλοπή.
  4. Ατέλειες του Web browser μπορούν να επιτρέψουν σε ένα ανέντιμο Web server να αποκτήσει απόρρητες πληροφορίες από τον Web client.
  5. Λόγω της ύπαρξης πατενταρισμένων τεχνολογιών, πολλοί οργανισμοί αγοράζουν λογισμικό με ειδικές άδειες, γεγονός που δημιουργεί εκ νέου προβλήματα.

Καθένα από τα παραπάνω απαιτεί ιδιαίτερη αντιμετώπιση. Δυστυχώς, κάποιες από τις λύσεις που εφαρμόζονται είναι αλληλοσυγκρουόμενες. Για παράδειγμα, για ελαχιστοποιηθεί ο κίνδυνος της παρακολούθησης της επικοινωνίας πολλοί οργανισμοί αγοράζουν ασφαλής Web servers, που βασίζονται σε πληθώρα κρυπτογραφικών πρωτοκόλλων. Αλλά τέτοιοι Web servers απαιτούν ψηφιακά υπογεγραμμένα πιστοποιητικά για να λειτουργήσουν και τα πιστοποιητικά αυτά πρέπει να ανανεώνονται τακτικά. Συνεπώς, τέτοιοι οργανισμοί είναι ευάλωτοι σε επιθέσεις denial of service.

6.2.2 Λειτουργώντας έναν Ασφαλή Web Server

Οι Web servers είναι σχεδιασμένοι να δέχονται ανώνυμες αιτήσεις από άγνωστους υπολογιστές σε όλο το Internet και να παραδίδουν τις ζητούμενες πληροφορίες γρήγορα και αποτελεσματικά. Κατά αυτόν τον τρόπο δημιουργούν έναν τρόπο πρόσβασης στον υπολογιστή, που εύκολα μπορεί να εκμεταλλευτεί κάποιος απατεώνας.

Δεν υπάρχει λογισμικό που να μην περικλείει κινδύνους η χρήση του. Οι Web servers είναι από την φύση τους πολύ πολύπλοκα και εξειδικευμένα προγράμματα. Εξάλλου, πολλοί οργανισμοί χρησιμοποιούν Web servers των οποίων ο πηγαίος κώδικας είναι ελεύθερα διαθέσιμος στο Internet. Μολονότι αυτό επιτρέπει την εξερεύνηση και επιθεώρηση του προγράμματος, δίνει την δυνατότητα σε κάποιο που έχει τις απαραίτητες γνώσεις να ανακαλύψει ατέλειες που κάνουν ευάλωτο τον Web server.

Η ικανότητα των Web server να ενσωματώνουν CGI scripts περιπλέκει σημαντικά την εφαρμογή της ασφάλειας. Τα CGI scripts προσθέτουν νέα χαρακτηριστικά και δυνατότητες σε έναν Web server, όμως το τίμημα είναι η παρουσίαση νέων προβλήματα ασφαλείας. Για παράδειγμα, ένας Web server μπορεί να έχει ρυθμιστεί έτσι ώστε να έχει πρόσβαση σε αρχεία ενός συγκεκριμένού καταλόγου, αλλά ένας χρήστης να εγκαταστήσει ηθελημένα ή όχι ένα CGI script που να επιτρέπει την ανάγνωση κάθε αρχείου στον υπολογιστή. Οι περισσότεροι χρήστες δεν έχουν εμπειρία στην σύνταξη ασφαλών CGI scripts και συνεπώς υπάρχει ισχυρή πιθανότητα να περιέχουν αδυναμίες δίνοντας το ελεύθερο σε εισβολείς να εκτελέσουν οποιαδήποτε εντολή στο σύστημα του Web server.

Στο εμπόριο και στο Διαδίκτυο υπάρχουν πολλά λειτουργικά συστήματα. Μερικά από αυτά είναι πιο ασφαλή να χρησιμοποιηθούν σαν πλατφόρμες για Web servers από άλλα. Εξαιτίας της πληθώρας των γλωσσών προγραμματισμού, της πλούσιας ποικιλίας εργαλείων και την ικανότητα σύνδεσης πολλών χρηστών την ίδια στιγμή, από οποιοδήποτε απομακρυσμένο σημείο του Διαδικτύου, το λειτουργικό σύστημα UNIX είναι άσχημη επιλογή για τέτοιο σκοπό. Η εμπειρία έχει δείξει ότι το πιο σίγουρο σύστημα για Web server είναι ένας υπολογιστής που τρέχει μόνο τον Web server και καμία άλλη εφαρμογή, δεν υποστηρίζει τις απομακρυσμένες συνδέσεις και δεν έχει έτοιμη για χρήση scripting language. Με αυτό το σκεπτικό συστήματα όπως τα MS-WINDOWS και τα MACINTOSH είναι πιο κατάλληλα, αλλά δεν πρέπει να ξεχνάμε πόσο λίγα εργαλεία και ευκολίες προσφέρουν. Επιπλέον, το UNIX είναι πιο γρήγορο λειτουργικό από το MacOS και είναι διαθέσιμο για πλατφόρμες που είναι επίσης πιο γρήγορες από MS-WINDOWS υπολογιστές. Τέλος, πάντα πρέπει να έχουμε υπόψη μας το προσωπικό που είναι υπεύθυνο για τον server και το λογισμικό. Ένα UNIX σύστημα που διαχειρίζεται ένας έμπειρος θα είναι πιο ασφαλές από ένα MS-WINDOWS σύστημα που διαχειρίζεται ένας αρχάριος.

Για την κατασκευή ενός ασφαλούς Web server σε οποιαδήποτε πλατφόρμα, τα εξής θέματα πρέπει να ληφθούν υπόψη:

Παρακάτω θα μελετήσουμε μερικές τεχνικές για την επιτυχημένη αντιμετώπιση αυτών των θεμάτων. Για ευκολότερη κατανόηση, θα αναφερθούμε σε παραδείγματα από τον Apache Web Server.

Το UID του Server

Οι περισσότεροι Web servers είναι σχεδιασμένοι για να ξεκινούν από τον superuser (root). Αυτό είναι αναγκαίο για να μπορεί ο server να χρησιμοποιεί την πόρτα 80 για τις εισερχόμενες αιτήσεις εξυπηρέτησης, την τυποποιημένη HTTP πόρτα, και να μπορεί να γράφει στα log αρχεία. Έπειτα περιμένει για εισερχόμενες αιτήσεις και μόλις παραλάβει μία, τότε δημιουργεί μία θυγατρική διεργασία που θα αναλάβει την αίτηση, ενώ η γονική διεργασία επιστρέφει στην παρακολούθηση της πόρτας 80. Η θυγατρική διεργασία αλλάζει το UID της στο όνομα χρήστη που καθορίζεται σε ρυθμιστικό αρχείο. Όλες οι ενέργειες που εκτελούνται προς απάντηση της αίτησης, όπως η εκτέλεση CGI scripts, πραγματοποιούνται κάτω από την δικαιοδοσία του απλού χρήστη που ορίζεται στο ρυθμιστικό αρχείο.

Το όνομα χρήστη κάτω από το οποίο τρέχουν οι θυγατρικές διεργασίες δεν πρέπει να είναι αυτό του root, γιατί έτσι δημιουργείται μεγάλη τρύπα ασφαλείας. Για παράδειγμα κάθε CGI script που εκτελείται από την θυγατρική διεργασία με root UID έχει απεριόριστη πρόσβαση στο σύστημα αρχείων του server. Αντίθετα θα πρέπει να χρησιμοποιείται όνομα χρήστη που δεν έχει ιδιαίτερες δυνατότητες όσο αναφορά την διαχείριση του server.

Μερικοί πιστεύουν ότι είναι καλύτερο ακόμα και η γονική διεργασία του server να μην ξεκινά σαν root, επειδή δεν γνωρίζουμε τις ατέλειες του κώδικα που είναι υπεύθυνο για την παρακολούθηση της πόρτας 80 και την δημιουργία θυγατρικών διεργασιών. Υπάρχουν δύο προβλήματα με αυτή την προσέγγιση:

  1. Ο server δεν θα μπορεί να ανοίγει την πόρτα 80. Θα πρέπει να χρησιμοποιεί άλλη πόρτα όπως η 8000 ή η 8080.
  2. Τα ρυθμιστικά αρχεία της συμπεριφοράς τους server (τα οποία διαβάζει ο server κάθε φορά που ξεκινά) θα πρέπει να είναι αναγνώσιμα από τον UID κάτω από το οποίο τρέχει ο server. Επίσης οι άδειες προσπέλασης των log αρχείων θα πρέπει να τροποποιηθούν ώστε ο χρήστης κάτω από τον οποίο τρέχει ο server να μπορεί να τα διαβάσει και να γράψει σε αυτά. Έτσι κάποιο CGI script, αφού τρέχει με το ίδιο UID που τρέχει τον server, μπορεί να τροποποιήσει ή και να σβήσει τα παραπάνω αρχεία.

Η Δομή των Καταλόγων του Server

Οι Web servers είναι πολύπλοκα προγράμματα που χρησιμοποιούν πολλά αρχεία σε πολλούς καταλόγους. Τα περιεχόμενα μερικών από αυτούς τους καταλόγους πρέπει να είναι διαθέσιμα σε χρήστες όλου του Διαδικτύου, ενώ τα περιεχόμενα άλλων πρέπει να είναι αναγνώσιμα μόνο στους χρήστες του υπολογιστή που βρίσκεται ο server ή μόνο στον superuser αυτού του υπολογιστή.

Ο Apache server διαθέτει έξι καταλόγους:

Κατάλογος

Σκοπός

cgi-bin

Περιέχει CGI scripts.

conf

Περιέχει τα ρυθμιστικά αρχεία του server.

htdocs

Περιέχει ηλεκτρονικά έγγραφα.

icons

Περιέχει εικονίδια που υπάρχουν στα ηλεκτρονικά έγγραφα.

logs

Περιέχει αρχεία που καταγράφουν τις δραστηριότητες του server.

support

Περιέχει συμπληρωματικά προγράμματα για τον server.

Η πιο απλή προσέγγιση για τις άδειες προσπέλασης των καταλόγων τους server είναι η δημιουργία ενός χρήστη www και της ομάδας www, που θα χρησιμοποιούνται από τον διαχειριστή του Web server για την διαχείριση αυτού.

drwxr-xr-x 5 www www 1024 Aug 8 00:01 cgi-bin/

drwxr-x--- 2 www www 1024 Jun 11 17:21 conf/

-rwx------ 1 www www 109674 May 8 23:58 httpd

drwxrwxr-x 2 www www 1024 Aug 8 00:01 htdocs/

drwxrwxr-x 2 www www 1024 Jun 3 21:15 icons/

drwxr-x--- 2 www www 1024 May 4 22:23 logs/

Στην ομάδα www θα ανήκουν όλοι οι χρήστες που συντάσσουν HTML σελίδες, ενώ ο χρήστης www θα αντιπροσωπεύει τον διαχειριστή του Web server. Οι άδειες προσπέλασης στους καταλόγους ρυθμίζονται έτσι ώστε μόνο ο χρήστης www να μπορεί να τροποποιήσει τα ρυθμιστικά αρχεία και τα log αρχεία. Οι κατάλογοι conf και logs δεν πρέπει να είναι αναγνώσιμοι από όλους και εξαρτάται από το πόση εμπιστοσύνη υπάρχει στους χρήστες της ομάδας www για το αν θα είναι αναγνώσιμοι και από την ομάδα www. Ο κατάλογος cgi-bin και τα περιεχόμενα του πρέπει να μπορούν να εκτελούνται και να διαβάζονται από όλους του χρήστες, αλλά όχι και να τροποποιούνται από όλους. Κανονικά μόνο ο www θα πρέπει να έχει δικαίωμα τροποποίησης του καταλόγου cgi-bin, ενώ το κατά πόσο οι χρήστες της ομάδας www θα μπορούν να τροποποιούν αυτόν τον κατάλογο εξαρτάται και πάλι από την εμπιστοσύνη που υπάρχει σε αυτούς.

Οι κατάλογοι htdocs και icons (και τα περιεχόμενα τους) έχουν άλλες απαιτήσεις. Όλα τα αρχεία που διανέμει στο Internet ο Web server βρίσκονται σε αυτούς τους καταλόγους. Επίσης η ομάδα www πρέπει να έχουν πρόσβαση γραφής, ανάγνωσης και εκτέλεσης σε αυτούς τους καταλόγους. Γι' αυτό, οι κατάλογοι πρέπει να γίνουν αναγνώσιμοι από όλο τον κόσμο και τροποποιήσιμοι, αναγνώσιμοι και εκτελέσιμοι από την ομάδα www.

Η παραπάνω πρακτική, όσον αναφορά τις άδειες προσπέλασης των καταλόγων htdocs και icons, κρύβει κινδύνους. Η πρόσβαση των απομακρυσμένων χρηστών σε απαγορευμένα έγγραφα περιορίζεται μέσω των IP διευθύνσεων και με την παροχή μυστικών κωδικών. Έτσι, όμως, δεν μπορούν να προστατευτούν από τοπικούς μη εγκεκριμένους χρήστες, καθ' ότι είναι αναγνώσιμα από όλον τον κόσμο. Μία λύση σε αυτό το πρόβλημα είναι η ρύθμιση του server να τρέχει με ένα όνομα χρήστη που να ανήκει στην ομάδα www (π.χ. httpd). Ο server και πάλι θα έχει πρόσβαση ανάγνωσης στους καταλόγους αυτούς και δεν χρειάζεται πλέον να είναι αναγνώσιμοι από όλο το κόσμο.

drwxr-x--- 5 www www 1024 Aug 8 00:01 cgi-bin/

drwxrwx--- 2 www www 1024 Aug 8 00:01 htdocs/

drwxrwx--- 2 www www 1024 Jun 3 21:15 icons/

Σε αυτήν την περίπτωση, προσοχή πρέπει να δοθεί στο να μην είναι οι κατάλογοι conf και logs και τα περιεχόμενα τους αναγνώσιμοι και τροποποιήσιμοι από τους χρήστες τις ομάδας www, γιατί οι θυγατρικές διεργασίες του server θα έχουν ανεπιθύμητη πρόσβαση σε σημαντικά για την λειτουργία τους server αρχεία. Ένα CGI πρόγραμμα μπορεί να εκμεταλλευτεί αυτήν την αδυναμία και να προκαλέσει σοβαρά προβλήματα.

Μία άλλη προσέγγιση, που απαλλάσσει από όλους τους παραπάνω πονοκεφάλους είναι η ακόλουθη:

drwxr-x--- 5 root www 1024 Aug 8 00:01 cgi-bin/

drwx------ 2 root www 1024 Jun 11 17:21 conf/

-rwx------ 1 root www 109674 May 8 23:58 httpd

drwxrwx--- 2 root www 1024 Aug 8 00:01 htdocs/

drwxrwx--- 2 root www 1024 Jun 3 21:15 icons/

drwx------ 2 root www 1024 May 4 22:23 logs/

Το μοντέλο αυτό είναι ιδιαίτερα χρήσιμο όταν ο superuser και ο διαχειριστής του Web server είναι το ίδιο πρόσωπο. Ο χρήστης httpd ανήκει στην ομάδα www. Οι κατάλογοι conf και logs μπορούν να τροποποιηθούν και να αναγνωστούν μόνο από τον superuser και η πρόσβαση στους καταλόγους htdocs και icons περιορίζεται μόνο στους χρήστες της ομάδας www (συμπεριλαμβανομένου και του httpd). Ο κατάλογος cgi-bin είναι εκτελέσιμος και αναγνώσιμος μόνο από την ομάδα www (συνεπώς και από τον httpd), αλλά τροποποιήσιμος μόνο από τον superuser. Τέλος το εκτελέσιμο αρχείο httpd, μπορεί να εκτελείται και να τροποποιείται μόνο από τον superuser γεγονός που αυξάνει την ασφάλεια του συστήματος.

Τα Ρυθμιστικά Αρχεία (Configuration Files)

Μιλώντας πάντα για τον Apache server, τα αρχεία του conf καταλόγου είναι:

Αρχείο

Σκοπός

access.conf

Ελέγχει την πρόσβαση στα αρχεία του server.

httpd.conf

Αρχείο ρύθμισης των γενικών ιδιοτήτων του server.

mime.types

Καθορίζει την σχέση μεταξύ των επεκτάσεων των αρχείων και των ΜΙΜΕ τύπων.

srm.conf

(Server Resource Map). Περιέχει επιπλέον πληροφορίες ρύθμισης για τον server.

Επειδή οι πληροφορίες σε αυτά τα αρχεία μπορούν να χρησιμοποιηθούν για ανίχνευσή τυχόν αδυναμιών στο σύστημα του server και για την αποκάλυψη των ρυθμίσεων αυτού, πρέπει να προστατεύονται ώστε να μπορούν να διαβαστούν και τροποποιηθούν από τον superuser.

-rw------- 5 root root 954 Aug 8 00:01 access.conf

-rw------- 2 root root 2840 Jun 11 17:21 httpd.conf

-rw------- 1 root root 3290 May 8 23:58 mime.types

-rw------- 5 root root 4106 Aug 8 00:01 srm.conf

Ρυθμίσεις που Πρέπει να Αποφευχθούν

Εκτός από τον επανακαθορισμό των αδειών προσπέλασης, η παρακάτω επιλογές ρυθμίσεως μπορούν να επιτραπούν ή να αποτραπούν. Για την επίτευξη, όμως, της καλύτερης δυνατής κάλυψης του συστήματος από εξωγενής παράγοντες, η πιο σωστή ενέργεια είναι η μη χρήση τους.

Automatic Directory Listing

Οι περισσότεροι Web servers θα παρουσιάζουν σε λίστα τα περιεχόμενα ενός καταλόγου εάν δεν υπάρχει αρχείο με το όνομα index.html στον κατάλογο αυτόν. Αυτή η δυνατότητα μπορεί να προκαλέσει προβλήματα ασφαλείας, καθώς δίνει την ευκαιρία σε όλους να μάθουν για τα αρχεία του συστήματος.

Symbolic-link Following

Μερικοί Web servers επιτρέπουν στους χρήστες να περικλείουν συμβολικούς συνδέσμους (symbolic links) που οδηγούν έξω από τον htdocs κατάλογο. Κάτι τέτοιο επιτρέπει σε κάποιον που συντάσσει HTML σελίδες και έχει πρόσβαση να στον htdocs κατάλογο να κάνει εμπιστευτικά αρχεία που βρίσκονται σε καταλόγους του υπόλοιπου συστήματος διαθέσιμα σε όλο το κόσμο. Είναι κατανοητό πως αυτή η ρύθμιση είναι καλύτερα να παραμείνει απενεργοποιημένη.

Server-side Includes

Οι Server-side Includes (SSI) είναι εντολές που ενσωματώνονται σε ένα HTML έγγραφο και επεξεργάζονται από τον server πριν το έγγραφο αποσταλεί στον client που το ζήτησε. Χρησιμοποιούνται για να συμπεριλάβουν ένα άλλο έγγραφο στο αρχικό ή για την εκτέλεση ενός προγράμματος και παρουσίαση του αποτελέσματος. Οι SSI θέτουν σε κίνδυνο την ακεραιότητα του συστήματος, γιατί κανείς δεν μπορεί να γνωρίζει τι θα ζητήσουν από τον server. Στους περισσότερους Web servers είναι κανονικά απενεργοποιημένες, ενώ σε άλλους (π.χ. Apache server) επιτρέπεται η μερική ενεργοποίηση τους σε συγκεκριμένους καταλόγους.

User-maintained Directories

Είναι δυνατόν, κάθε χρήστης να διατηρεί τον δικό του κατάλογο με ηλεκτρονικές σελίδες και να μπορεί να προσθέτει νέες σελίδες ή να αφαιρεί παλαιότερες κατά βούληση. Όμως κατά αυτόν τον τρόπο δεν μπορεί να ελεγχθεί ο χρήστης για τα αρχεία που δημοσιοποιεί, για το CGI scripts που γράφει ή για πιθανούς συμβολικούς συνδέσμους που χρησιμοποιεί. Η καλύτερη πρακτική είναι η παροχή σε κάθε χρήστη που επιθυμεί να συντάσσει ηλεκτρονικές σελίδες, το δικό του χώρο στον htdocs κατάλογο. Επίσης, σημασία έχει να κατανοήσει την πολιτική ασφαλείας του server και πόσο απαραίτητο είναι να την τηρεί.

Γράφοντας Aσφαλή CGI Scripts

Τα περισσότερα "παραθυράκια" στην ασφάλεια ενός συστήματος δεν είναι σκόπιμα. Συνήθως οφείλονται σε άτομα που δεν έχουν την απαιτούμενη εμπειρία να γράψουν ασφαλή CGI scripts. Όσο περισσότεροι είναι οι χρήστες που έχουν την δυνατότητα να γράψουν scripts, τόσο μεγαλύτερη είναι η πιθανότητα ότι ένα από αυτά τα scripts θα περιέχει ένα σημαντικό λάθος. Γι' αυτό το λόγο κανένα script δεν πρέπει να εγκαθίσταται στον server, εάν δεν το έχει ελέγξει πρώτα κάποιος ειδικός.

Προβλήματα της HTML γλώσσας

Η γλώσσα HTML μπορεί να περιορίζει το μήκος των πεδίων σε καθορισμένο αριθμό χαρακτήρων, να εμπεριέχει κρυφά δεδομένα και να καθορίζει μεταβλητές που πρέπει να παρέχονται στα CGI scripts. Παρ' όλα αυτά, δεν πρέπει τα CGI scripts να εξαρτούνται από αυτούς τους περιορισμούς, μια και οποιοδήποτε CGI script μπορεί να εκτελεστεί άμεσα μέσω της URL του. Οι επιτιθέμενοι δεν είναι υποχρεωμένοι να προσπελάσουν το script μέσω της παρεχόμενης HTML φόρμας. Τα ακόλουθα παραδείγματα επιδεικνύουν

Web Browsers

Ένας από τους λόγους γιατί είναι εξαιρετικά εύκολα να δημιουργηθεί ένα μη ασφαλές CGI script, είναι το γεγονός ότι είναι δύσκολο να δοκιμαστούν όλα τα scripts σε συνδυασμό με την πληθώρα των HTTP clients (Web browsers) που είναι διαθέσιμοι. Οι αντιδράσεις των clients στην ίδια απροσδόκητη κατάσταση διαφέρουν. Ένα παράδειγμα είναι η εισαγωγή ειδικών χαρακτήρων στο πεδίο μιας φόρμας. Ενώ μερικοί clients θα τους λάβουν σαν χαρακτήρες διαφυγής και δεν θα τους προωθήσουν στο script, άλλοι θα πράξουν ακριβώς το αντίθετο. Σε περίπτωση που ο προγραμματιστής του script δεν έχει προβλέψει για τιμές που περιέχουν χαρακτήρες διαφυγής, τότε η συμπεριφορά του script θα είναι απρόβλεπτη.

Άλλες Γλώσσες Προγραμματισμού

Πολλές γλώσσες προγραμματισμού, συμπεριλαμβανομένων των C, ksh, sh, csh και Perl, παρέχουν τα μέσα για δημιουργία διεργασιών. Αυτές οι δυνατότητες πρέπει να αποφεύγονται κατά την σύνταξη CGI scripts. Εάν είναι αναγκαίο να δημιουργηθεί μια διεργασία, πρέπει να αποφευχθεί να περαστούν στην διεργασία ακολουθίες χαρακτήρων που παράχθηκαν από το χρήστη. Εάν πάλι είναι αναγκαίο να περαστούν στην διεργασία δεδομένα του χρήστη, προσοχή πρέπει να δοθεί να μην περιέχονται χαρακτήρες όπως οι ` $ | ; > * < &.

Όσον αναφορά την σύνταξη scripts που επιτρέπει στους χρήστες να στέλνουν μηνύματα ηλεκτρονικού ταχυδρομείου, πρέπει να προτιμάται το πρόγραμμα /usr/lib/sendmail από τα bin/mailx και /usr/ucb/mail.

Συμβουλές

Web Server και FTP Server

Συνηθίζεται από πολλά sites η χρήση κοινού υπολογιστή για Web server και FTP server. Σε αυτές τις περιπτώσεις κάποιοι κατάλογοι χρησιμοποιούνται για αποθήκευση δεδομένων που είναι προσπελάσιμα τόσο μέσω anonymous FTP όσο και μέσω World Wide Web. Έτσι, ένα αρχείο μπορεί να έχει δύο URLs που αναφέρονται σε αυτό, όπως για παράδειγμα

http://any.server.com/myHomeDirectory/myFile.html και

ftp:// any.server.com/myHomeDirectory/myFile.html

Η κοινή χρήση καταλόγων από τα πρωτόκολλα HTTP και FTP, θέτει αρκετά θέματα ασφαλείας:

Η πιο σωστή λύση από άποψη ασφάλειας είναι λειτουργία των δύο υπηρεσιών σε διαφορετικές μηχανές, αλλά ακόμα και όταν δεν γίνεται αλλιώς πρέπει να αποφεύγεται η κοινή χρήση καταλόγων. Μάλιστα ο χρήστης με του οποίου το UID τρέχουν οι θυγατρικές διεργασίες του server δεν πρέπει να έχουν κανένα είδος πρόσβασης στους καταλόγους του FTP server.

Firewalls

Ένα firewall μπορεί να χρησιμοποιηθεί για να ενισχύσει την ασφάλεια ενός site. Η πιο συνηθισμένη χρήση ενός firewall είναι η δημιουργία ενός "εσωτερικού site", στο οποίο ανήκει και ο Web server. Σε αυτήν την κατασκευή ο Web server είναι διαθέσιμος μόνο στους υπολογιστές του "εσωτερικού site".

Μια άλλη μέθοδος, είναι η τοποθέτηση του Web server έξω από το "εσωτερικό site", ώστε να είναι διαθέσιμος στους χρήστες του Διαδικτύου. Από άποψη ασφάλειας του οργανισμού, το ασφαλέστερο μέρος για τον Web server είναι έξω από το "εσωτερικό site", γιατί σε περίπτωση κατάληψης του δεν θα κινδυνεύει το εσωτερικό τοπικό δίκτυο. Επίσης, δεν συνιστάται η εγκατάσταση του Web server στον μηχανή του firewall, μια και μία πιθανή δυσλειτουργία του server θα καταστρέψει όλο το δίκτυο του οργανισμού.

Διάγνωση Εισβολής

Για τα UNIX συστήματα, υπάρχει το πρόγραμμα Tripwire που ελέγχει περιοδικά το σύστημα και ανιχνεύει εάν έχουν τροποποιηθεί αρχεία ή προγράμματα του συστήματος. Επίσης, τα αρχεία λάθους (error log files) και τα αρχεία πρόσβασης (access log files) του server πρέπει να ελέγχονται σε τακτά χρονικά διαστήματα για ύποπτες ενέργειες. Η παρουσία εντολών, όπως οι "rm", "login", "/bin/sh" και "perl", στα access log files, καθώς και η παρουσία πολύ μεγάλων γραμμών URL, πρέπει να θεωρούνται επικίνδυνες. Επίσης πρέπει να γίνεται έλεγχος για επανειλημμένες ανεπιτυχής προσπάθειες για πρόσβαση ενός προστατευμένου εγγράφου.

Άλλα Μέτρα Ασφαλείας

Η χρήση του υπολογιστή πρέπει να περιοριστεί μόνο για Web server. Κάτι τέτοιο θα κάνει πιο δύσκολη την κατάληψη του μηχανήματος, αλλά και αν γίνει, ο εισβολέας δεν θα μπορεί να κάνει επιπλέον ζημιά στο δίκτυο. Στην περίπτωση ενός αφιερωμένου υπολογιστή για Web server, οι παρακάτω επιλογές πρέπει να ληφθούν υπόψη:

Μία άλλη φιλοσοφία στην εγκατάσταση του Web server είναι η τοποθέτηση όλων των αρχείων του σε μια ξεχωριστή δομή καταλόγων, με χρήση της εντολής chroot. Όλο το υπόλοιπο σύστημα αρχείων παραμένει κρυφό από τον Web server, ο οποίος δεν γνωρίζει καν την ύπαρξη του, γεγονός που περιορίζει μία πιθανή επίθεση στους καταλόγους του server.

6.2.3 Προστατεύοντας Εμπιστευτικά Αρχεία

Πολλοί οργανισμοί επιθυμούν να περιορίσουν τις πληροφορίες που θα διανείμουν οι Web server τους. Αυτό μπορεί να συμβαίνει επειδή ο Web server χρησιμοποιείται για την διανομή δεδομένα εμπιστευτική φύσεως, όπως πληροφορίες για τους εργαζόμενους τις εταιρίας, και για την διανομή δεδομένων για το κοινό, όπως η ταχυδρομική διεύθυνση και τα τηλέφωνα επικοινωνίας τις εταιρίας. Για να ικανοποιήσουν αυτές τις απαιτήσεις πολλοί Web servers παρέχουν τρόπους προστασίας των εμπιστευτικών εγγράφων.

Υπάρχουν τρεις τρόποι περιορισμού της πρόσβασης:

Περιορισμός πρόσβασης σύμφωνα με τις IP διευθύνσεις, subnets, ή τα domain names.

Έγγραφα και κατάλογοι προστατεύονται με τέτοιον τρόπο ώστε μόνο οι browsers που συνδέονται από συγκεκριμένες IP διευθύνσεις, IP subnets, ή domains έχουν πρόσβαση σε αυτά.

Περιορισμός πρόσβασης σύμφωνα με ονόματα χρηστών και κωδικών.

Έγγραφα και κατάλογοι προστατεύονται με τέτοιον τρόπο ώστε ο απομακρυσμένους χρήστης για να αποκτήσει πρόσβαση σε αυτά πρέπει να χρησιμοποιήσει κατάλληλο όνομα και κωδικό.

Κρυπτογράφηση με χρήση ασύμμετρης κρυπτογραφίας.

Η αίτηση για το έγγραφο και το ίδιο το έγγραφο μεταδίδονται κρυπτογραφημένα ώστε μόνο ο προοριζόμενος παραλήπτης να μπορεί να τα διαβάσει. Χρησιμοποιούνται δημόσιες κλείδες και πιστοποιητικά. Αυτό το είδος περιορισμού παρέχεται μόνο από server εξοπλισμένο με το απαραίτητο λογισμικό.

Καθένας από τις παραπάνω τεχνικές έχει πλεονεκτήματα και μειονεκτήματα. Ο περιορισμός μέσω των IP διευθύνσεων έχει αποτελέσματα σε περιπτώσεις απλών χρηστών, αλλά όχι απέναντι σε αποφασισμένους hackers. Με τον κατάλληλο εξοπλισμό και λογισμικό, ένας hacker μπορεί να αλλάξει την IP διεύθυνση του (IP spoofing) και να φαίνεται ότι συνδέεται από κάπου άλλου. Επίσης, δεν υπάρχει εγγύηση ότι το άτομο που επικοινωνεί με τον server βρίσκεται σε εγκεκριμένο υπολογιστή. Ο απομακρυσμένος υπολογιστής μπορεί να έχει καταληφθεί και να χρησιμοποιείται σαν βιτρίνα. Ένα άλλο είδος επίθεσης στο οποίο είναι ευάλωτη η τεχνική αυτή είναι το DNS spoofing. Για μέγιστη ασφάλεια, η τεχνική αυτή πρέπει να συνδυάζεται με έλεγχο της ταυτότητας του χρήστη.

Ο περιορισμός μέσω μυστικών κωδικών παρουσιάζει τα δικά του προβλήματα. Οι κωδικοί που επιλέγουν οι χρήστες δεν είναι πάντοτε ασφαλής. Πολύ συχνά χρησιμοποιούνται φανερούς κωδικού, όπως το όνομα του χρήστη, τα γενέθλια τους, το τηλέφωνο τους ή το όνομα του κατοικίδιου τους. Τέτοιοι κωδικοί μπορούν εύκολα να προβλεφτούν και οι Web servers, σε αντίθεση με τα UNIX συστήματα, δεν απαγορεύουν τις επανειλημμένες αποτυχημένες προσπάθειες εισαγωγής τους σωστού κωδικού. Ένας hacker μπορεί να εφαρμόσει πρόγραμμα πρόβλεψης κωδικών (password guessing program) και να μαντέψει τον σωστό κωδικό.

Άλλο πρόβλημα με τους κωδικούς είναι ότι είναι ευάλωτοι σε υποκλοπή καθώς διασχίζουν το δίκτυο. Επειδή δεν είναι ισχυρά κρυπτογραφημένοι, ένας hacker μπορεί με τον κατάλληλο hardware και software, να τους καταγράψει και να τους χρησιμοποιήσει μελλοντικά. Επιπλέον, ο browser στέλνει τον κωδικό στον server κάθε φορά που ζητά κάποιο εμπιστευτικό έγγραφο, πράγμα που διευκολύνει έναν που παρακολουθεί την επικοινωνία να υποκλέψει την ευαίσθητη πληροφορία.

Ο συνδυασμός όλων των παραπάνω τεχνικών αποτελεί την καλύτερη δυνατή λύση. Με τον περιορισμό των IP διευθύνσεων και domain names, περιορίζεται ο αριθμός των υπολογιστών που μπορούν να έχουν πρόσβαση στον server, ενώ με τον περιορισμό μέσω κωδικών και ονομάτων, περιορίζονται οι χρήστες που έχουν το δικαίωμα να δουν τα εμπιστευτικά αρχεία. Τέλος με την κρυπτογράφηση, διασφαλίζεται όλη η ανταλλασσόμενη πληροφορία, συμπεριλαμβανομένων των κωδικών και των ίδιων των εγγράφων.

Αρχεία Ρύθμισης Πρόσβασης του Apache Server

Ο Apache server διαθέτει δύο αρχεία για τον έλεγχο της πρόσβασης: το "access.conf" και το ".htaccess". Το πρώτο επιτρέπει την συνολική διαχείριση των περιορισμών και βρίσκεται στον κατάλογο conf του server. Με το δεύτερο πραγματοποιείται η ανά κατάλογο διαχείριση των περιορισμών. Το όνομα ".htaccess" μπορεί να τροποποιηθεί στο αρχείο srm.conf.

Το αν θα χρησιμοποιηθεί ένα κεντρικό αρχείο για την ρύθμιση της πρόσβασης στον server (access.conf) ή πολλά κατανεμημένα αρχεία εξαρτάται από τον Web διαχειριστή. Πάντως, υπάρχουν αρκετά πλεονεκτήματα στην χρήση του κεντρικού αρχείου, τη στιγμή που το μόνο θετικό που προσφέρει η ανά κατάλογο διαχείριση είναι η ρύθμιση των καταλόγων χωρίς να είναι απαραίτητη η επανεκκίνηση του server.

Κατ' αρχήν, τα κατανεμημένα αρχεία δεν προσφέρουν ένα κεντρικό μέρος όπου καθορίζεται η πολιτική του οργανισμού. Δεύτερον, παρ' όλο που τα αρχεία .htaccess είναι κρυφά, δεν είναι δύσκολο να διαγραφούν ή να τροποποιηθούν αφού ανήκουν σε κατάλογους που μπορεί να μην έχουν ιδιαίτερη προστασία. Τρίτον, σε πολλούς servers υπάρχει ένα bug που επιτρέπει την διανομή του αρχείου, σαν να ήταν ένα οποιοδήποτε άλλο HTML αρχείο, μέσω ενός κανονικού URL. Είναι αυτονόητο, πως αυτό το χαρακτηριστικό είναι τελείως ανεπιθύμητο. Τέλος, σε περίπτωση αλλαγής ή αναβάθμισης του server είναι πολύ ευκολότερο να ενημερωθεί ένα αρχείο από δεκάδες, ίσως και εκατοντάδες, μικρών διασκορπισμένων αρχείων.

6.2.4 Αποφεύγοντας τους Κινδύνους της Παρακολούθησης

Η παρακολούθηση της επικοινωνίας από καλά οργανωμένους hackers, επηρεάζει όλα τα πρωτόκολλα του Internet, αλλά περισσότερο την υπηρεσία World Wide Web, όπου ευαίσθητα κείμενα και άλλα είδη πληροφορίας, όπως αριθμοί πιστωτικών καρτών, μεταδίδονται στο δίκτυο. Ένας τρόπος για να καταπολεμηθεί αυτό το πρόβλημα είναι η κρυπτογράφηση των πληροφοριών, ώστε να είναι κατανοητή μόνο στον προοριζόμενο παραλήπτη.

Υπάρχουν τρεις διαφορετικοί τρόποι σύμφωνα με τους οποίους η μεταδιδόμενη πληροφορία μπορεί να κρυπτογραφηθεί.

  1. Link Encryption: Οι τηλεφωνικές γραμμές που χρησιμοποιούνται για την μεταφορά των IP πακέτων μπορούν να κρυπτογραφηθούν, με την βοήθεια ειδικών routers. Όλη η πληροφορία κρυπτογραφείται αυτόματα και γρήγορα, ενώ για την αποκρυπτογράφηση της απαιτείται η κατοχή παρόμοιου hardware από την αντίστοιχη πλευρά. Το μειονέκτημα της είναι ότι είναι πολύ ακριβή.
  2. Document Encryption: Τα έγγραφα που τοποθετούνται στον Web server κρυπτογραφούνται με ένα σύστημα όπως το PGP. Σαν μέθοδος είναι δύσκολη στην εφαρμογή καθ' ότι όλα τα έγγραφα χρειάζεται να κρυπτογραφηθούν πριν τοποθετηθούν στον server. Παρ' όλα αυτά, παρέχει αποτελεσματική προστασία.
  3. Protocol Encryption: Το πρωτόκολλο HTTP μπορεί να ασφαλιστεί με διάφορες προεκτάσεις. Τα δύο επικρατέστερα νέα πρωτόκολλα είναι τα SSL και S/HTTP. Όταν χρησιμοποιείται κάποιο πρωτόκολλο κρυπτογράφησης, η ασφάλεια εξαρτάται από τα εξής ζητήματα: (α) το πόσο ισχυρός είναι ο αλγόριθμος κρυπτογράφησης, (β) το μήκος του κλειδιού κρυπτογράφησης, (γ) το πόσο μυστικό είναι το κλειδί κρυπτογράφησης, (δ) το πόσο αξιόπιστο είναι το πρόγραμμα του Web server και (ε) το πόσο αξιόπιστο είναι το πρόγραμμα του Web client.

Παρακολούθηση μέσω των Log Αρχείων

Όλοι οι Web servers δημιουργούν log files που καταγράφουν μια αξιόλογη ποσότητα πληροφορίας. Τα αρχεία αυτά μεγαλώνουν χωρίς όριο έως ότου αυτόματα σβηστούν οι παλαιότερες καταχωρήσεις. Η εξέταση αυτών των αρχείων παρέχει σημαντικές πληροφορίες για τους ανθρώπους που χρησιμοποιούν τον Web server.

Ο Apache server διατηρεί τα ακόλουθα αρχεία:

access_log

Περιέχει λίστα με όλες τις αιτήσεις εξυπηρέτησης δέχεται ο server. Κάθε καταχώρηση στην λίστα αποτελείται από τα εξής στοιχεία: το όνομα του απομακρυσμένου υπολογιστή, το όνομα του χρήστη (εάν είναι διαθέσιμο), την ώρα που ξεκίνησε η μεταφορά, η HTTP εντολή που εκτελέστηκε (GET για μεταφορά αρχείων, POST για επεξεργασία φορμών και HEAD για τις MIME επικεφαλίδες), τον κώδικα κατάστασης (status code) που επιστρέφθηκε και τέλος ο αριθμός των bytes που μεταφέρθηκε.

agent_log

Περιέχει λίστα με τα προγράμματα που χρησιμοποιήθηκαν για την πρόσβαση του server.

error_log

Περιέχει λίστα με όλα τα λάθη που συμβαίνουν στον server, είτε παράγονται από τον ίδιο, είτε από τα CGI scripts.

refer_log

Περιέχει καταχωρήσεις που αποτελούνται από τo URL που είχε επισκεφτεί πρωτύτερα ο χρήστης και το URL που ζήτησε από τον server.

Οι πληροφορίες στο refer_log αρχείο μπορούν να συνδυαστούν με πληροφορίες στο access_log αρχείο για να καθοριστούν τα ονόματα των χρηστών ή τουλάχιστον οι υπολογιστές τους. Επίσης, το access_log αρχείο περιέχει το πλήρες URL που ζητήθηκε και ανάλογα ποια HTTP εντολή εκτελέστηκε (GET ή POST) μπορεί να περιέχει και επιπλέον πληροφορίες. Για τις Web φόρμες που χρησιμοποιούν την μέθοδο GET αντί της POST, όλα τα δεδομένα της φόρμας συμπεριλαμβάνονται στο URL και συνεπώς καταλήγουν στο access_log αρχείο. Έτσι, πιθανοί κωδικοί που εισάγονται σε τέτοιες φόρμες μπορούν εύκολα να γίνουν γνωστοί από το access_log.

Καταλαβαίνουμε, λοιπόν, ότι με προσεκτική ανάλυση των log αρχείων μπορεί να δημιουργηθεί μια πολύ περιεκτική εικόνα των ανθρώπων που συνδέονται στον Web server. Ανάλογα με το πως διαχειρίζονται αυτές οι πληροφορίες και με τι σκοπό μπορούν να καταλήξουν στην παραβίαση της ιδιωτικής τους ζωής. Επιπλέον, ας μην ξεχνάμε ότι σε περίπτωση κατάληψης του server, τα δεδομένα που είναι αποθηκευμένα στα logs μπορεί να προκαλέσουν την περαιτέρω διαρροή των ιδιωτικών τους συνηθειών.

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

6.2.5 Από την μεριά των Web Browsers

Εκτός από την απειλή της καταγραφή των ενεργειών του χρήστη που συζητήθηκε προηγουμένως, οι Web browsers υποφέρουν από πολλά προβλήματα ασφαλείας.

Εκτελώντας Κώδικα από το Διαδίκτυο

Οι περισσότεροι Web browsers μπορούν να ρυθμιστούν ώστε βοηθητικές εφαρμογές να τρέχουν αυτόματα μόλις ένας συγκεκριμένος τύπος αρχείου κατεβεί στον υπολογιστή από το δίκτυο. Παρ' όλο που αυτός είναι ένας καλός τρόπος για την επέκταση των δυνατοτήτων του Web browser, δεν θα πρέπει να συνηθίζεται. Προγράμματα από το Διαδίκτυο που εκτελούνται αυτόματα, θέτουν σε κίνδυνο την ασφάλεια του υπολογιστή μας. Εισβολείς μπορούν να τρέξουν οτιδήποτε κώδικα επιθυμούν, χωρίς την ρητή άδεια μας.

Επιπλέον μέτρα που πρέπει να πάρουμε είναι:

Ιδιαίτερη αναφορά θα κάνουμε σε ειδικές μορφές κώδικα.

Java

Η Java είναι μια γλώσσα που αναπτύχθηκε από την Sun Microsystems. Τα Java scripts βρίσκονται μεταγλωττισμένα στον server. Τα HTML έγγραφα αναφέρονται στα Java applets με το tag <APPLET>. Οι browsers που τα υποστηρίζουν, τα κατεβάζουν όταν ζητηθεί από την HTML σελίδα και τα εκτελούν.

Τα Java applets επειδή εκτελούνται στην μεριά του browser, μεταφέρουν τους κινδύνους της ασφάλειας από τον server στον client. Κατά καιρούς έχουν ανακαλυφθεί αρκετά "παραθυράκια" στην ασφάλεια που παρέχει η γλώσσα, άλλα σημαντικά και άλλα λιγότερο σημαντικά, τα οποία στην τελευταία επανέκδοση έχουν καλυφθεί. Παραμένουν όμως μερικές αδυναμίες στον σχεδιασμό της γλώσσας. Βέβαια, η γλώσσα βρίσκεται υπό διαρκή έλεγχο και οι νέες κριτικές αναμένονται.

JavaScript

Η JavaScript είναι μια συλλογή από επεκτάσεις στην HTML γλώσσα και έχει σχεδιασθεί από την Netscape Corporation. Κυρίως χρησιμοποιείται για να ελέγχει τον browser, για παράδειγμα το άνοιγμα και κλείσιμο παραθύρων, η διαχείριση φορμών, οι ρυθμίσεις του browser και τέλος η εκτέλεση Java applets. Μολονότι η σύνταξη της JavaScript είναι παρόμοια με της Java, διαφέρουν σε πολλά σημεία.

Σε αντίθεση με τις "τρύπες" της Java, οι οποίες μπορούν να προκαλέσουν την αλλαγή των δεδομένων στο σκληρό δίσκο του χρήστη, οι "τρύπες" της JavaScript έχουν να κάνουν με την παραβίαση του απόρρητου του χρήστη. Τα περισσότερα bugs που έχουν αναφερθεί, όπως η υποκλοπή της e-mail διευθύνσεως του χρήστη, την υποκλοπή των αρχείων του σκληρού δίσκου και την καταγραφή των ενεργειών του χρήστη, έχουν καλυφθεί, νέα εμφανίζονται καθημερινά. Η JavaScript πρέπει να θεωρείται ανασφαλής και συνιστάται η απενεργοποίηση της. Το τελευταίο bug αναφέρθηκε τον Φεβρουάριο του 1998.

ActiveX

ActiveX είναι μια τεχνολογία που έχει αναπτυχθεί από την Microsoft Corporation για την διανομή λογισμικού από το Internet. Όπως και τα Java applets, έτσι και τα ActiveX controls, μπορούν να εμπεριέχονται σε μια HTML σελίδα. Σε αντίθεση με την Java που είναι ανεξάρτητη της υποκείμενης πλατφόρμας, τα ActiveX controls μεταγλωττίζονται ξεχωριστά για κάθε πλατφόρμα και λειτουργικό σύστημα.

Τα ActiveX controls υπογράφονται ψηφιακά από τον συγγραφέα τους, με τέτοιον τρόπο ώστε τα η υπογραφή δεν μπορεί να αλλοιωθεί ή να αποκηρυχθεί. Οι ψηφιακές υπογραφές πιστοποιούνται από CAs άξιες εμπιστοσύνης (π.χ. VeriSign) και τα ActiveX controls αποκτούν την μορφή μικρών πακέτων λογισμικού. Πριν ο browser κατεβάσει κάποιο ActiveX, ελέγχει να δει εάν είναι υπογεγραμμένο και πιστοποιημένο. Εάν δεν είναι, προειδοποιεί τον χρήστη ότι ίσως να μην ασφαλές. Ο χρήστης πρέπει να αποφεύγει να κατεβάζει τέτοια ActiveX controls στον υπολογιστή του.

Η διαδικασία της πιστοποίησης επιβεβαιώνουν ότι το ActiveX control δεν μπορεί να διανέμεται ανώνυμα και ότι δεν έχει τροποποιηθεί από τρίτον. Παρ' όλα αυτά, η διαδικασία της πιστοποίησης δεν επιβεβαιώνει ότι η εκτέλεση ενός control δεν θα έχει παρενέργειες. Αν και το πιθανότερο είναι ότι δεν θα συμβεί κάτι τέτοιο, δεν αποκλείεται να περιέχεται λάθος στον κώδικα του.

Μεγάλη προσοχή πρέπει να δίνεται σε ActiveX controls που δεν είναι υπογεγραμμένα ή πιστοποιημένα. Πολλοί αρχάριοι χρήστες δεν ενεργοποιούν την επιλογή "High Security" στον Microsoft Internet Explorer (ο μόνος που υποστηρίζει τα ActiveX προς το παρών), με συνέπεια να γίνονται δεκτά όλα τα controls υπογεγραμμένα ή όχι. Τέτοια αφέλεια μπορεί να οδηγήσει σε ολική καταστροφή του υπολογιστή μας ή σε παραβίαση των προσωπικών μας αρχείων. Το μεγαλύτερο, όμως, πρόβλημα με τα ActiveX είναι το γεγονός ότι δεν μπορεί να ανιχνευθεί η λειτουργία τους. Μπορούν να μεταδίδουν εμπιστευτικές πληροφορίες πίσω στο δίκτυο, να φυτεύουν στον Explorer έναν ίο και να μην υποπέσουν στην αντίληψη μας αμέσως. Ακόμα και η καταστροφή ανιχνευθεί αμέσως, ο Explorer δεν προσφέρει πληροφορίες για τα ActiveX που είχαν κατέβει από τον δίκτυο.

Cookies

Τα cookies είναι ένας μηχανισμός που αναπτύχθηκε από την Netscape Corporation για να καλύψει την stateless φύση του HTTP πρωτοκόλλου. Κανονικά, όποτε ένας browser ζητά από έναν Web server ένα URL, η αίτηση επεξεργάζεται από τον server ανεξάρτητα από τις προηγούμενες αιτήσεις του client. Για παράδειγμα, πολύ πιθανόν να έχει ξανά ζητηθεί το συγκεκριμένο URL. Μολονότι αυτό κάνει τον server πιο αποτελεσματικό, δεν επιτρέπει την δημιουργία αντικειμένων, όπως οι κάρτες αγορών, που απαιτούν ο server να θυμάται τις ενέργειες του χρήστη για ένα μεγάλο χρονικό διάστημα.

Τα cookies λύνουν αυτό το πρόβλημα. Ένα cookie είναι μια συλλογή από πληροφορίες, που περιλαμβάνουν ένα session identifier, και στέλνει ο server στον browser την πρώτη φορά που συνδέεται. Από εκεί και πέρα, ο browser επιστρέφει ένα αντίγραφο του cookie κάθε φορά που συνδέεται, δημιουργώντας έτσι την ψευδαίσθηση ενός "session".

Τα cookies μπορούν να χρησιμοποιηθούν με τέτοιο τρόπο ώστε να παραβιάσουν το απόρρητο των χρηστών. Κάθε φορά που ο browser επισκέπτεται έναν server αφήνει πίσω του ένα σωρό πληροφορίες, όπως την IP διεύθυνση του υπολογιστή μας, το λειτουργικό σύστημα, τον κατασκευαστή του browser και τα URL που ζητήθηκαν καθώς και αυτά που είχαν επισκεφτεί πριν. Χωρίς τα cookies θα ήταν αδύνατο να συνδυαστούν οι πληροφορίες των log αρχείων για να δημιουργηθεί ένα μονοπάτι με όλους τους Web server που έχουμε επισκεφτεί. Υπάρχουν, για παράδειγμα, διαφημιστικές εταιρίες που συλλέγουν cookies χρηστών που έχουν επισκεφτεί τις σελίδες των sites που περιέχουν τις διαφημίσεις τους. Κάθε site χρησιμοποιεί το δικό τα δικά του cookies και ο συνδυασμός όλων των cookies επιτρέπει την σύνταξη ενός προφίλ του κάθε χρήστη.

Πολλά άλλα sites χρησιμοποιούν τα cookies για να πιστοποιούν την ταυτότητα των χρηστών που συνδέονται στους Web servers τους. Κάθε φορά που συνδέεται ο χρήστης με τον server το username του και το password του περιέχεται στο cookie, διευκολύνοντας και αυτοματοποιώντας την διαδικασία. Κάποιος τρίτος που παρακολουθεί την επικοινωνία και είναι σε θέση να κλέψει το μεταδιδόμενο cookie, μπορεί το χρησιμοποιήσει για να αποκτήσει πρόσβαση σε εμπιστευτικά αρχεία (replay attack).

6.2.6 Περαιτέρω Πληροφορίες

Όλα τα παραπάνω είναι βασισμένα στο F.A.Q. που βρίσκεται στην εξής ηλεκτρονική σελίδα:

The WWW Security FAQ -- http://www.w3.org/Security/Faq/

Βασικές Έννοιες