Η δέσμη ενεργειών μεταξύ τοποθεσιών (XSS) είναι ένας τύπος εκμετάλλευσης ασφαλείας που επιτρέπει στους εισβολείς να εισάγουν κακόβουλα σενάρια σε ιστότοπους χρησιμοποιώντας κώδικα πελάτη. Αποτελεί σημαντική απειλή καθώς οι εισβολείς μπορούν να το χρησιμοποιήσουν για να πλαστοπροσωπήσουν τους χρήστες, να αποκτήσουν πρόσβαση σε ευαίσθητα δεδομένα ή ακόμα και να αλλάξουν τα περιεχόμενα της σελίδας του ιστότοπου.
Είναι τόσο επικίνδυνο που το 2021 ήταν το νούμερο δύο στη λίστα απαρίθμησης κοινών αδυναμιών των κορυφαίων 25 πιο επικίνδυνων αδυναμιών. Αυτό σημαίνει ότι εάν δημιουργείτε ιστότοπους, πρέπει να γνωρίζετε σχετικά με το σενάριο μεταξύ τοποθεσιών και πώς να το αποτρέψετε.
Πώς λειτουργεί η δέσμη ενεργειών μεταξύ τοποθεσιών;
Προτού κατανοήσετε πώς λειτουργεί η δέσμη ενεργειών μεταξύ τοποθεσιών, είναι σημαντικό να γνωρίζετε τι σημαίνει η πολιτική ίδιας προέλευσης (SOP). Το SOP είναι μια πολιτική μηχανισμού ασφαλείας που περιορίζει έναν ιστότοπο (μιας προέλευσης) από την ανάγνωση ή την εγγραφή σε έναν άλλο ιστότοπο (διαφορετική προέλευση). Αποτρέπει κακόβουλους ιστότοπους από το να στέλνουν κακόβουλο κώδικα σε αξιόπιστους ιστότοπους.
Οι επιθέσεις δέσμης ενεργειών μεταξύ τοποθεσιών προσπαθούν να παρακάμψουν αυτήν την πολιτική εκμεταλλευόμενοι την αδυναμία του προγράμματος περιήγησης να διακρίνει μεταξύ νόμιμου HTML και κακόβουλου κώδικα. Για παράδειγμα, ένας εισβολέας μπορεί να εισάγει κώδικα JavaScript στον ιστότοπο-στόχο. Ας υποθέσουμε ότι το πρόγραμμα περιήγησης εκτελεί τον κώδικα και ο εισβολέας αποκτά πρόσβαση σε διακριτικά περιόδου λειτουργίας, cookies και άλλα ευαίσθητα δεδομένα.
Υπάρχουν τρεις τύποι δέσμες ενεργειών μεταξύ τοποθεσιών που χρησιμοποιούν οι χάκερ για να σπάσουν ιστότοπους: ανακλώμενο, αποθηκευμένο και DOM XSS.
Πώς να αποτρέψετε τη δέσμη ενεργειών μεταξύ τοποθεσιών στον κόμβο
Ακολουθούν ορισμένα βήματα που μπορείτε να ακολουθήσετε για να αποτρέψετε τη δημιουργία σεναρίων μεταξύ τοποθεσιών στο Node.
Απολύμανση εισόδου
Οι εισβολείς πρέπει να μπορούν να στέλνουν δεδομένα στην εφαρμογή Ιστού σας και να τα εμφανίζουν σε έναν χρήστη προκειμένου να εκτελέσουν μια επίθεση XSS. Επομένως, το πρώτο προληπτικό μέτρο που πρέπει να λάβετε είναι να απολυμάνετε όλα τα στοιχεία που λαμβάνει η εφαρμογή σας από τους χρήστες της. Αυτό είναι κρίσιμο γιατί εντοπίζει τα πλαστά δεδομένα πριν τα εκτελέσει ο διακομιστής. Θα μπορούσατε να το κάνετε χειροκίνητα ή να χρησιμοποιήσετε ένα εργαλείο όπως επικυρωτή που κάνει τη διαδικασία πιο γρήγορη.
Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το επικυρωτή για να ξεφύγετε από ετικέτες HTML στην εισαγωγή χρήστη όπως παρακάτω.
εισαγωγή επικυρωτή από "επικυρωτής"?
let userInput = `Jane <σενάριο onload="συναγερμός('Χάκ XSS');"></script>`;
αφήνω sanitizedInput = validator.escape (userInput);
Εάν επρόκειτο να εκτελέσετε τον παραπάνω κώδικα, η εξυγίανση θα ήταν αυτή.
Ιωάννα < σενάριο onload=" συναγερμός(' Χακάρισμα XSS');"></ γραφή>
Περιορίστε την εισαγωγή χρήστη
Περιορίστε τον τύπο εισόδου που μπορεί να υποβάλει ένας χρήστης στη φόρμα σας μέσω επικύρωσης. Για παράδειγμα, εάν έχετε ένα πεδίο εισαγωγής για ένα email, επιτρέψτε μόνο την εισαγωγή με τη μορφή email. Με αυτόν τον τρόπο, ελαχιστοποιείτε τις πιθανότητες οι εισβολείς να υποβάλουν κακά δεδομένα. Μπορείτε επίσης να χρησιμοποιήσετε το πακέτο επικύρωσης για αυτό.
Εφαρμόστε Πολιτική Cookie Μόνο HTTP
Τα cookies αποθηκεύουν δεδομένα σε μια τοπική κρυφή μνήμη και στείλτε το πίσω στον διακομιστή μέσω HTTP. Αλλά οι εισβολείς μπορούν επίσης να χρησιμοποιήσουν JavaScript για πρόσβαση σε αυτά μέσω του προγράμματος περιήγησης, επομένως είναι εύκολοι στόχοι.
Το cookie μόνο HTTP είναι μια πολιτική που εμποδίζει τα σενάρια από την πλευρά του πελάτη να έχουν πρόσβαση σε δεδομένα cookie. Αυτό σημαίνει ότι ακόμα κι αν η εφαρμογή σας περιέχει μια ευπάθεια και κάποιος εισβολέας την εκμεταλλευτεί, δεν θα μπορεί να έχει πρόσβαση στο cookie.
Ακολουθεί ένα παράδειγμα για το πώς μπορείτε να εφαρμόσετε την πολιτική cookie μόνο για HTTP στο Node.js χρησιμοποιώντας το Express:
εφαρμογή.χρήση(εξπρές.συνεδρία({
μυστικό: "μυστικό",
cookie: {
http Μόνο: αληθής,
ασφαλής: αληθής
}
}))
Εάν ένας εισβολέας προσπάθησε να αποκτήσει πρόσβαση στο cookie με το http Μόνο η ετικέτα ορίστηκε σε true όπως φαίνεται παραπάνω, θα λάβουν μια κενή συμβολοσειρά.
Το Cross-Site Scripting είναι ένας εύκολος στόχος για τους χάκερ
Ενώ η διασφάλιση της ασφάλειας της εφαρμογής σας είναι ζωτικής σημασίας, η εφαρμογή της μπορεί να γίνει πολύπλοκη. Σε αυτήν την ανάρτηση, μάθατε για τις επιθέσεις δέσμης ενεργειών μεταξύ τοποθεσιών και πώς μπορείτε να τις αποτρέψετε στο Node. Εφόσον οι εισβολείς εκμεταλλεύονται τα τρωτά σημεία της εφαρμογής σας για να εισάγουν κακόβουλο κώδικα στον διακομιστή σας, φροντίστε πάντα να αποστειρώνετε τα δεδομένα των χρηστών. Κάνοντας αυτό, αφαιρείτε τον κακόβουλο κώδικα πριν τον αποθηκεύσει ή τον εκτελέσει η εφαρμογή σας.