Αν μόλις ξεκινάτε την ανάπτυξη ιστού ή το ταξίδι σας στο Node.js, μπορεί να μην γνωρίζετε πόσο σημαντικό είναι να προστατεύσετε την εφαρμογή σας.
Το Express.js παρέχει μια αποτελεσματική λύση για τη δημιουργία εφαρμογών web backend, αλλά υστερεί σε θέματα ασφάλειας. Όταν δημιουργείτε μια εφαρμογή Ιστού, χρειάζεστε επαρκή μέτρα ασφαλείας για την προστασία των δεδομένων των χρηστών σας.
Ευτυχώς, υπάρχουν μέθοδοι που μπορείτε να χρησιμοποιήσετε για να βελτιώσετε την ασφάλεια των εφαρμογών σας Express.js. Όλες αυτές οι συμβουλές θα βοηθήσουν στην ενίσχυση της ασφάλειας των εφαρμογών σας χρησιμοποιώντας διαφορετικές προσεγγίσεις.
Ρυθμίστε μια εφαρμογή Express.js
Ξεκινήστε ρυθμίζοντας μια επίδειξη Διακομιστής Ιστού Express.js χρησιμοποιώντας npm, το Node Package Manager. Δημιουργήστε έναν φάκελο έργου τοπικά και αλλάξτε τον κατάλογο σε αυτόν στο τερματικό σας.
mkdir express-project
cd express-project
Στη συνέχεια, δημιουργήστε ένα πακέτο.json αρχείο στον ριζικό κατάλογο.
npm init -y
Προχωρήστε και εγκαταστήστε το Express.js.
npm εγκατάσταση express
Τέλος, δημιουργήστε ένα server.js αρχείο στον ριζικό κατάλογο του φακέλου του έργου σας και προσθέστε τον ακόλουθο κώδικα για να ρυθμίσετε έναν βασικό διακομιστή web.
συνθ εκφράζω = απαιτώ("εξπρές")
συνθ app = express()
συνθ PORT = διεργασία.env. ΛΙΜΑΝΙ || 5000app.get("/", (απαιτ., ανταπ.) => {
res.json("Γειά σου Κόσμε!")
})
app.listen (PORT, () => {
κονσόλα.κούτσουρο(`Ενεργοποίηση διακομιστή http://localhost:${PORT}`)
})
Ξεκινήστε τον διακομιστή με αυτήν την εντολή:
διακομιστής κόμβου.js
Είστε πλέον έτοιμοι να εξερευνήσετε ορισμένα από τα μέτρα που μπορείτε να χρησιμοποιήσετε για να ασφαλίσετε την εφαρμογή Express.js.
1. Ασφάλιση εφαρμογών Express.js με χρήση κράνους
Κράνος είναι ένα ενδιάμεσο λογισμικό Node.js που βοηθά στην ασφάλεια των εφαρμογών από την πλευρά του διακομιστή ορίζοντας διάφορες κεφαλίδες ασφαλείας HTTP. Αυτές οι κεφαλίδες παρέχουν ουσιαστικούς μηχανισμούς άμυνας έναντι κοινές ευπάθειες ασφαλείας backend, όπως δέσμες ενεργειών μεταξύ τοποθεσιών (XSS), παραχάραξης αιτημάτων μεταξύ τοποθεσιών (CSRF) και πολλά άλλα.
Το Express.js δεν διαμορφώνει τις κεφαλίδες ασφαλείας HTTP από προεπιλογή, αφήνοντας ένα πιθανό ελάττωμα ασφαλείας που εκθέτει δυνητικά ευαίσθητες κεφαλίδες. Χρησιμοποιώντας αυτές τις πληροφορίες, κακόβουλοι παράγοντες ενδέχεται να έχουν τη δυνατότητα να αποκτήσουν μη εξουσιοδοτημένη πρόσβαση ή να διακόψουν με άλλον τρόπο την εφαρμογή σας.
Το κράνος λειτουργεί ως ζωτική ασπίδα, διασφαλίζοντας ότι οι αποκρίσεις HTTP της εφαρμογής υιοθετούν τα απαραίτητα μέτρα ασφαλείας, μειώνοντας σημαντικά την πιθανή επιφάνεια επίθεσης.
Εξερευνώντας την ασφάλεια των εφαρμογών Express.js χωρίς κράνος
Με τον διακομιστή σε λειτουργία, εξετάστε τις κεφαλίδες της εφαρμογής. Προχώρα και κάντε αιτήματα HTTP στο API χρησιμοποιώντας το Postman ή οποιονδήποτε άλλο πελάτη που εμφανίζει κεφαλίδες απόκρισης. Τα περισσότερα προγράμματα περιήγησης περιλαμβάνουν ένα σύνολο εργαλείων προγραμματιστών που θα σας επιτρέψουν να το κάνετε.
Όταν στέλνετε αιτήματα στο τελικό σημείο της αρχικής σελίδας, θα πρέπει να παρατηρείτε παρόμοια αποτελέσματα στο Κεφαλίδες τμήμα της απάντησης μέσα στον Ταχυδρόμο.
Παρατηρήστε το X-Powered-By επί κεφαλής. Συνήθως, οι τεχνολογίες υποστήριξης χρησιμοποιούν αυτήν την κεφαλίδα για να υποδείξουν το πλαίσιο ή άλλο λογισμικό που τροφοδοτεί την εφαρμογή Ιστού. Συνήθως πρέπει να αφαιρείτε το X-Powered-By κεφαλίδα σε περιβάλλον παραγωγής.
Με αυτόν τον τρόπο, θα αποτρέψετε τους πιθανούς εισβολείς από το να αποκτήσουν πολύτιμες πληροφορίες που θα μπορούσαν να χρησιμοποιήσουν για να εκμεταλλευτούν γνωστά τρωτά σημεία που σχετίζονται με τη στοίβα τεχνολογίας σας.
Δοκιμάστε τη διαμόρφωση ασφαλείας του διακομιστή Express.js
Για να αξιολογήσουμε την κατάσταση ασφαλείας των εφαρμογών σας, θα χρησιμοποιήσουμε το Κεφαλίδες ασφαλείας διαδικτυακό εργαλείο. Αυτή η εφαρμογή έχει σχεδιαστεί ειδικά για να αξιολογεί τη διαμόρφωση ασφαλείας των κεφαλίδων HTTP για εφαρμογές από την πλευρά του πελάτη, καθώς και για εφαρμογές διακομιστή.
Αρχικά, πρέπει να κάνετε τον τοπικό σας διακομιστή Express.js προσβάσιμο μέσω Διαδικτύου. Υπάρχουν δύο πιθανές προσεγγίσεις για να επιτευχθεί αυτό: η ανάπτυξη της εφαρμογής Express.js σε έναν διακομιστή cloud ή η χρήση του ngrok.
Για να το χρησιμοποιήσετε, κατεβάστε το ngrok zip, εξαγάγετε το εκτελέσιμο αρχείο και εκκινήστε την εφαρμογή. Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να φιλοξενήσετε τον τοπικό σας διακομιστή Express.js με ngrok.
ngrok http 5000
Το ngrok θα παράγει κάποιες σύντομες πληροφορίες που μοιάζουν με αυτό:
Αντιγράψτε το παρεχόμενο URL προώθησης και επικολλήστε το στο Κεφαλίδες ασφαλείαςπλαίσιο εισαγωγής και κάντε κλικ στο Σάρωση κουμπί.
Μόλις ολοκληρωθεί η αξιολόγηση ασφαλείας, θα πρέπει να λάβετε μια παρόμοια αναφορά.
Με βάση την αναφορά, είναι προφανές ότι ο διακομιστής Express.js έλαβε κακή κατάσταση φά Βαθμός. Αυτός ο χαμηλός βαθμός είναι αποτέλεσμα της απουσίας βασικών κεφαλίδων ασφαλείας HTTP στη διαμόρφωση του διακομιστή—η απουσία τους αφήνει τον διακομιστή ευάλωτο σε πιθανούς κινδύνους ασφαλείας.
Ενσωματώστε το κράνος στην εφαρμογή Express.js
Τώρα, προχωρήστε και ενσωματώστε το Helmet στην εφαρμογή Express.js. Εκτελέστε την παρακάτω εντολή για να εγκαταστήσετε την εξάρτηση.
npm εγκατάσταση κράνους
Ενημερώστε το αρχείο server.js και εισαγάγετε το κράνος.
συνθ κράνος = απαιτώ("κράνος")
Τώρα, προσθέστε το κράνος στην εφαρμογή Express.js.
app.use (κράνος())
Τέλος, γυρίστε τον διακομιστή ανάπτυξης, αντιγράψτε τον σύνδεσμο προώθησης από του ngrok τερματικό και επικολλήστε το στο Κεφαλίδα ασφαλείας πεδίο εισαγωγής για να σαρώσετε ξανά τον τοπικό διακομιστή. Μόλις ολοκληρωθεί η εκ νέου σάρωση, θα πρέπει να δείτε παρόμοια αποτελέσματα με αυτά:
Μετά την ενσωμάτωση του Helmet, το Express.js περιλαμβάνει αρκετές βασικές κεφαλίδες ασφαλείας στην απόκριση HTTP. Αυτή η ουσιαστική βελτίωση προκάλεσε τη μετάβαση της εφαρμογής Express.js σε ένα ΕΝΑ Βαθμός.
Αν και το Helmet δεν είναι μια αλάνθαστη λύση, ενισχύει σημαντικά τη συνολική ασφάλεια της εφαρμογής Express.js.
2. Ασφάλεια εφαρμογών Express.js με χρήση Joi, μια βιβλιοθήκη επικύρωσης εισόδου
Joi είναι μια βιβλιοθήκη επικύρωσης εισόδου που βοηθά στην ασφάλεια των εφαρμογών Express.js παρέχοντας έναν βολικό τρόπο για την επικύρωση και την απολύμανση των εισροών των χρηστών. Ορίζοντας σχήματα επικύρωσης χρησιμοποιώντας το Joi, μπορείτε να καθορίσετε την αναμενόμενη δομή, τους τύπους δεδομένων και τους περιορισμούς για τα εισερχόμενα δεδομένα.
Το Joi επικυρώνει την είσοδο σε σχέση με το καθορισμένο σχήμα, διασφαλίζοντας ότι πληροί τα καθορισμένα κριτήρια. Αυτό βοηθά στην αποτροπή κοινών τρωτών σημείων ασφαλείας, όπως η έγχυση δεδομένων, η δέσμη ενεργειών μεταξύ τοποθεσιών (XSS) και άλλες επιθέσεις χειρισμού δεδομένων.
Ακολουθήστε αυτά τα βήματα για να ενσωματώσετε το Joi στην εφαρμογή σας.
- Εγκαταστήστε το Joi.
npm εγκατάσταση joi
- Εισαγάγετε το Joi στο αρχείο server.js σας.
συνθ Joi = απαιτώ('Joi');
- Δημιουργήστε ένα σχήμα επικύρωσης δεδομένων Joi που καθορίζει την αναμενόμενη δομή και τυχόν περιορισμούς για τα δεδομένα εισόδου.
συνθ schema = Joi.object({
email: Joi.string().email().required(),
κωδικός πρόσβασης: Joi.string().min(5).Μέγιστη(16).απαιτείται()
}); - Επικυρώστε όλα τα εισερχόμενα δεδομένα χρησιμοποιώντας το καθορισμένο σχήμα.
συνθ { error, value } = schema.validate (req.body);
αν (λάθος) {
// Χειρισμός σφάλματος επικύρωσης
// Για παράδειγμα, επιστρέψτε μια απάντηση σφάλματος
ΕΠΙΣΤΡΟΦΗ res.status(400).json({ λάθος: λεπτομέρειες σφάλματος[0].μήνυμα });
}
Εφαρμόζοντας αυτά τα βήματα, μπορείτε να αξιοποιήσετε τις δυνατότητες επικύρωσης εισόδου του Joi για να ασφαλίσετε τις εφαρμογές σας Express.js. Αυτό θα διασφαλίσει ότι τα εισερχόμενα δεδομένα πληρούν καθορισμένους περιορισμούς, αποτρέποντας πιθανές απειλές για την ασφάλεια της παραποίησης δεδομένων.
3. Ασφάλιση εφαρμογών Express.js με χρήση του μηχανισμού CORS
Το Cross-Origin Resource Sharing (CORS) είναι ένας μηχανισμός που χρησιμοποιούν οι διακομιστές ιστού για να διαχειρίζονται ποιες πηγές προέλευσης—πελάτες ή άλλες εφαρμογές από την πλευρά του διακομιστή—μπορούν να έχουν πρόσβαση στους προστατευμένους πόρους τους. Αυτός ο μηχανισμός βοηθά στην προστασία από μη εξουσιοδοτημένα αιτήματα πολλαπλής προέλευσης, αποτρέποντας ζητήματα όπως επιθέσεις μεταξύ δέσμης ενεργειών (XSS).
Για να ασφαλίσετε τις εφαρμογές Express.js χρησιμοποιώντας το CORS, ακολουθήστε αυτά τα βήματα:
- Εγκαταστήστε το πακέτο CORS.
npm εγκατάσταση cors
- Απαιτήστε και χρησιμοποιήστε το ενδιάμεσο λογισμικό CORS στο αρχείο server.js.
συνθ κορς = απαιτώ('κορς');
app.use (cors());
Ενσωματώνοντας το ενδιάμεσο λογισμικό CORS στην εφαρμογή Express.js, ενεργοποιείτε την κοινή χρήση πόρων μεταξύ προέλευσης. Αυτό διασφαλίζει ότι μετριάζετε πιθανούς κινδύνους ασφαλείας που σχετίζονται με αιτήματα πολλαπλής προέλευσης.
Ασφάλιση εφαρμογών από την πλευρά του διακομιστή με ευκολία
Μπορείτε να χρησιμοποιήσετε ένα ή περισσότερα από αυτά τα βασικά μέτρα για να βελτιώσετε την ασφάλεια των εφαρμογών σας Express.js.
Ενώ υπάρχουν πολλά μέτρα και προσεγγίσεις που είναι διαθέσιμες για την προστασία των εφαρμογών σας από την πλευρά του διακομιστή, η βασική λύση είναι ότι θα πρέπει να δώσετε προτεραιότητα στην ασφάλεια σε όλο τον κύκλο ζωής της ανάπτυξης. Αυτή είναι μια εργασία που ξεκινά από τη φάση του σχεδιασμού και θα πρέπει να συνεχιστεί μέχρι την ανάπτυξη.