German Greek English Spanish French Italian
menu

Μην χρησιμοποιείτε εξωτερικά αρχεία javascript : Blog

Η χρήση εξωτερικών αρχείων javascript μπορεί να είναι επιβλαβής σε εσάς και τους επισκέπτες της ιστοσελίδας σας. Blog

Αρχική/ Blog/ Μην χρησιμοποιείτε εξωτερικά αρχεία javascript

Μην χρησιμοποιείτε εξωτερικά αρχεία javascript

Η χρήση εξωτερικών αρχείων javascript μπορεί να είναι επιβλαβής σε εσάς και τους επισκέπτες της ιστοσελίδας σας.

Πολλές ιστοσελίδες χρησιμοποιούν αρχεία javascript η πηγή των οποίων είναι κάποιο άλλο domain. Συνήθως αυτό γίνεται αντιγράφοντας έτοιμο κώδικα ενσωμάτωσης κάποιου script (jquery, slider, gallery, κλπ) που βρήκαμε στο internet. Αυτή η πρακτική μπορεί να οδηγήσει σε πολλά προβλήματα και κυρίως σε σοβαρά θέματα ασφαλείας τόσο για τον ιδιοκτήτη του ιστότοπου όσο και για τους επισκέπτες του. Σε αυτό το άρθρο θα αναδείξουμε τα προβλήματα που μπορούν να ανακύψουν από την χρήση εξωτερικών αρχείων js και το τι μπορούμε να κάνουμε εναλλακτικά ώστε να εξασφαλίσουμε μέγιστη αξιοπιστία και ασφάλεια.

Προβλήματα αξιοπιστίας

Ας υποθέσουμε πως έχουμε έναν image slider που χρησιμοποιεί jquery και χρησιμοποιούμε ένα εξωτερικό αρχείο javascript example.com/slider.js ώστε να δουλέψει ο slider στο site μας. Δείτε τι μπορεί να συμβεί και να δημιουργηθεί πρόβλημα στο site μας από το γεγονός και μόνο ότι πρόκειται για εξωτερικό αρχείο.

Το άλλο domain δεν είναι διαθέσιμο

Αν το domain από το οποίο τραβάμε το αρχείο js (example.com) είναι κάτω, ή για κάποιο λόγο μη προσβάσιμο (πχ προβλήματα routing του internet provider), τότε το script μας δεν θα δουλέψει γιατί δεν θα μπορεί να φορτωθεί το αρχείο js. Ενώ το site μας είναι μία χαρά και online το script δεν θα δουλέψει και ο slider θα κρεμάσει επειδή κάποιο άλλο, άσχετο, site είναι κάτω. Αυτό ισχύει και για την google, την microsoft, και όποιο άλλο site νομίζετε ότι είναι 100% διαθέσιμο αιωνίως.

Μείωση ταχύτητας

Ο περιηγητής μας κάνει περισσότερη ώρα να φορτώσει αρχεία από εξωτερικά site καθώς πρέπει να κάνει query τρίτο site πράγμα που προσθέτει καθυστέρηση στην φόρτωση των σελίδων μας. Μία σελίδα στο διαδίκτυο αποτελείται από πολλά αρχεία (εικόνες, πολυμέσα, javascript, κλπ). Για κάθε τέτοιο αρχείο ο browser κάνει ένα query για να το φορτώσει. Αν παρατηρήσετε τον περιηγητή σας (πχ Firefox) στο κάτω μέρος του θα δείτε ότι όταν επισκέπτεστε μία σελίδα σας δείχνει τα αρχεία που φορτώνει. Ενώ τα τοπικά αρχεία φορτώνονται γρήγορα, στα εξωτερικά αρχεία μένει συγκριτικά πιο πολύ ώρα. Αυτό ισχύει για οποιονδήποτε τύπο αρχείου, εικόνες, javascript, css, κ.α.

Το αρχείο δεν υπάρχει πια

Ο ιδιοκτήτης του example.com μπορεί ανά πάσα στιγμή να διαγράψει, μετονομάσει, ή μετακινήσει το αρχείο javascript στο οποίο έχετε σύνδεσμο. Μπορεί ακόμα και το ίδιο το example.com να κλείσει ως site. Ο slider σας θα πάψει να δουλεύει και θα πασχίζετε να καταλάβετε γιατί συμβαίνει αυτό. Στη δε περίπτωση που το άλλο domain κλείσει εντελώς άντε να βρείτε το αρχείο js που χρειάζεστε ώστε να συνεχίσει να δουλεύει ο slider σας.

Προβλήματα ασφάλειας

Και πάμε τώρα στα πιο σοβαρά. Ο ιδιοκτήτης του example.com μπορεί ανά πάσα στιγμή να αλλάξει τα περιεχόμενα του αρχείου js ή να προσθέσει κάτι επιπλέον στο αρχείο άσχετο με την λειτουργία του slider. Το ίδιο μπορεί να συμβεί από κάποιον τρίτο αν το example.com έχει πέσει θύμα hacking. Οι hackers δεν θέλουν να γίνονται αντιληπτοί, γι αυτό το πιθανότερο είναι να αφήσουν τον κώδικα του slider ως έχει, ώστε να συνεχίσει να δουλεύει στα site που τον χρησιμοποιούν, και να προσθέσουν κακόβουλο κώδικα στο τέλος του αρχείου. Κάτι τέτοιο είναι πολύ δύκολο να το αντιληφθείτε. Τι μπορεί να είναι αυτός ο πρόσθετος κακόβουλος κώδικας στο αρχείο js; Μπορούν εύκολα να σας κλέψουν τα cookies στα οποία αποθηκεύονται στοιχεία της σύνδεσής σας στον ιστότοπο. Ενημερωτικά το Elxis 4.2+ χρησιμοποιεί HTTP ONLY cookies πράγμα που σημαίνει ότι η javascript δεν έχει πρόσβαση στα cookies που δημιουργεί το Elxis. Οπότε τουλάχιστον στο Elxis 4.2+ είστε ασφαλείς από αυτό, όχι όμως σε παλαιότερες διανομές ή άλλα CMS/site.

Μπορούν επίσης να προσθέσουν ένα onclick event σε μία φόρμα σύνδεσης οπότε την στιγμή που πατάτε το κουμπί να συνδεθείτε να στέλνει τα στοιχεία σύνδεσης username και password μέσω ajax σε ένα email ή να τα καταγράφει σε ένα αρχείο. Σημειώστε πως ο hacker ΔΕΝ χρειάζεται να έχει πρόσβαση σε κανένα αρχείο στο site σας για να το κάνει αυτό. Από το αρχείο js που έχει στο site του μπορεί να κάνει τα πάντα.

Αν έχετε ηλεκτρονικό κατάστημα μπορεί να κλέψει στοιχεία πιστωτικών καρτών των πελατών σας και οποιοδήποτε άλλο στοιχείο πληκτρολογήσει ο πελάτης. Πρακτικά μέσω του αρχείου αυτού και με την χρήση AJAX το άτομο που έχει πρόσβαση στο εξωτερικό αρχείο JS μπορεί να αντιγράψει όλη την κίνηση και τις πληροφορίες που τον ενδιαφέρουν από το site σας κάπου αλλού.

Η λύση - Χρήση εσωτερικών συνδέσμων

Τρομάξατε; Ελπίζω ναι. Μην ανησυχείτε όμως, η λύση είναι πολύ απλή. Απλά αντιγράψτε το εξωτερικό αρχείο JS κάπου στο site σας και αλλάξτε στον κώδικα ενσωμάτωσης του script σας (πχ του slider) τον σύνδεσμο προς το εξωτερικό αρχείο js (example.com/slider.js) στην διαδρομή που αντιστοιχεί στο σημείο που το βάλατε στο site σας (my-own-site.com/something/slider.js). Αυτό είναι όλο!