19 Βέλτιστες πρακτικές για την ασφάλεια API για εφαρμογή και διατήρηση της ασφάλειας

Η ασφάλεια API είναι μια από τις πιο σημαντικές πτυχές που πρέπει να προσέχετε σε σχεδόν κάθε εφαρμογή.

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

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

Κοινά τρωτά σημεία του API

#1. δέσμες ενεργειών μεταξύ τοποθεσιών (XSS)

Οι επιθέσεις XSS είναι συνηθισμένες σε εφαρμογές ιστού, αλλά μπορούν επίσης να συμβούν μέσω API εάν τα εισερχόμενα δεδομένα χρήστη δεν απολυμανθούν σωστά. Οι εισβολείς μπορούν να εκτελέσουν κακόβουλα σενάρια στον διακομιστή και να αποκτήσουν πρόσβαση σε ευαίσθητα δεδομένα.

#2. Παραβίαση περιορισμού ποσοστού

Η παραβίαση της δυνατότητας περιορισμού ρυθμού του API μπορεί να δώσει στους εισβολείς την ευκαιρία να βομβαρδίσουν τον διακομιστή σας με έναν τεράστιο αριθμό αιτημάτων. Τελικά, ο διακομιστής μπορεί να διακοπεί και η βάση πελατών σας μπορεί να δυσκολευτεί να επικοινωνήσει μαζί σας.

#3. Λανθασμένος έλεγχος ταυτότητας

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

#4. Μη ασφαλής μετάδοση δεδομένων

Τα δεδομένα που αποστέλλονται στους καταναλωτές του API σας πρέπει να είναι κρυπτογραφημένα καθ’ οδόν. Αν δεν είναι, τότε υπάρχουν πιθανότητες να διαρρεύσουν τα δεδομένα από επιτιθέμενους που χρησιμοποιούν επίθεση man-in-the-middle. Γι’ αυτό συνιστάται πάντα να χρησιμοποιείτε ένα ασφαλές πρωτόκολλο όπως το HTTPS για τη μετάδοση δεδομένων.

#5. Καταργημένες/Απαλαιωμένες εξαρτήσεις

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

Τώρα που γνωρίζετε τα τρωτά σημεία του API, ας δούμε μερικές βέλτιστες πρακτικές για την ασφάλεια του API σας.

Διαβάστε επίσης: Best Postman Alternatives to Test API for Developers

Ασφάλεια API – Βέλτιστες πρακτικές

Έκδοση API

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

  Καλύτεροι ιστότοποι Torrent του 2020. Ποιες είναι οι κορυφαίες επιλογές torrenting σας

Το να διατηρείτε το API σας ενημερωμένο είναι το λιγότερο που μπορείτε να κάνετε για να αποτρέψετε την εκμετάλλευσή του από εισβολείς.

Αυθεντικοποίηση

Υπάρχουν πολλοί τρόποι με τους οποίους μπορείτε να ελέγξετε την ταυτότητα ενός χρήστη API. Ο απλούστερος τρόπος είναι να χρησιμοποιήσετε την προσέγγιση ονόματος χρήστη/κωδικού πρόσβασης, αλλά αυτό είναι πολύ βασικό και βασίζεται απλώς στο πόσο ισχυρός είναι ο κωδικός πρόσβασης.

Ένας άλλος τρόπος είναι να χρησιμοποιήσετε κλειδιά API για πρόσβαση στο API. Μπορείτε να παρέχετε σε κάθε χρήστη API ένα μοναδικό κλειδί που μπορεί να χρησιμοποιήσει.

Ο έλεγχος ταυτότητας JWT είναι μια τεχνική κατά την οποία τα διαπιστευτήρια χρήστη μετατρέπονται σε ψηφιακά υπογεγραμμένο διακριτικό και στη συνέχεια αποστέλλονται στον χρήστη. Στη συνέχεια, ο χρήστης στέλνει το ίδιο διακριτικό σε κάθε αίτημα στον διακομιστή για επικύρωση από τον διακομιστή. Τα JWT έχουν επίσης χρόνο λήξης.

Η πιο αποτελεσματική λύση είναι το OAuth. Επιτρέπει την πρόσβαση τρίτων στο API με ήδη υπάρχοντα διαπιστευτήρια σύνδεσης. Για παράδειγμα, εάν είστε ήδη συνδεδεμένοι στο Google, μια εφαρμογή μπορεί να χρησιμοποιήσει αυτά τα διαπιστευτήρια για να συνδεθείτε στον λογαριασμό σας χωρίς να χρειάζεται κωδικό πρόσβασης. Ο λογαριασμός σας Google γίνεται ο κωδικός πρόσβασης.

Εξουσιοδότηση

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

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

Η διασφάλιση της καλής λειτουργίας της εξουσιοδότησης API μπορεί να αποτρέψει τη μη εξουσιοδοτημένη πρόσβαση σε έναν πόρο.

Διόρθωση δεδομένων

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

Μπορείτε να εφαρμόσετε την αντίδραση δεδομένων εφαρμόζοντας ένα ενδιάμεσο λογισμικό ή έναν διαχειριστή πύλης.

Κρυπτογράφηση

Αυτός έχει γίνει ο πιο σημαντικός έλεγχος ασφαλείας στον σημερινό κόσμο. Η κρυπτογράφηση είναι απαραίτητη εάν έχετε να κάνετε με οποιοδήποτε είδος ευαίσθητων πληροφοριών. Η λιγότερη κρυπτογράφηση που μπορείτε να κάνετε είναι χρησιμοποιώντας το πρωτόκολλο HTTPS, το οποίο χρησιμοποιεί χειραψία TLS (Transport Layer Security) και SSL (Secure Socket Layer).

Η κρυπτογράφηση από άκρο σε άκρο είναι ένας άλλος τρόπος για να ασφαλίσετε τα δεδομένα κατά τη μεταφορά. Τα δεδομένα που αποθηκεύονται στη βάση δεδομένων θα πρέπει επίσης να είναι κρυπτογραφημένα σε περίπτωση που ένας εισβολέας μπορεί να εισβάλει στη βάση δεδομένων και να αποκτήσει πρόσβαση στα δεδομένα.

Χειρισμός σφαλμάτων

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

  Πώς να συγχωνεύσετε επίπεδα στο Photoshop

Επικύρωση εισόδου και εξυγίανση δεδομένων

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

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

Η ακατάλληλη απολύμανση μπορεί να οδηγήσει σε επιθέσεις Cross-site scripting (XSS).

Συστήματα ανίχνευσης εισβολών

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

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

Τέτοια συστήματα είναι ένας πολύ καλός τρόπος για να προσδιορίσετε ποιος προσπαθεί να αποκτήσει πρόσβαση στο δίκτυό σας προτού παρεμποδίσει τα δεδομένα σας.

Λευκή λίστα IP

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

Είναι επωφελές αν γνωρίζετε ότι μόνο ορισμένες από τις εφαρμογές των συστημάτων πρόκειται να αποκτήσουν πρόσβαση στο API σας.

JSON Web Tokens

Τα JWT χρησιμοποιούνται γενικά για τον έλεγχο ταυτότητας ενός χρήστη στέλνοντας στον χρήστη ένα ψηφιακά υπογεγραμμένο διακριτικό που δημιουργήθηκε από τα διαπιστευτήριά του. Λειτουργεί επειδή κρύβει τα πραγματικά διαπιστευτήρια του χρήστη και επίσης δεν χρειάζεται να αποθηκεύσετε τα διαπιστευτήρια στη βάση δεδομένων ή στην πλευρά του χρήστη.

Το JWT μπορεί να χωριστεί σε τρεις ενότητες: κεφαλίδα, ωφέλιμο φορτίο και υπογραφή. Η ενότητα ωφέλιμου φορτίου περιέχει τα διαπιστευτήρια χρήστη και η κεφαλίδα μπορεί να περιέχει πληροφορίες όπως ο αλγόριθμος που χρησιμοποιείται. Το τμήμα υπογραφής υπογράφεται ψηφιακά από τον διακομιστή και τον πελάτη σε κάθε επόμενο αίτημα.

Τα JWT έχουν γενικά μια ημερομηνία λήξης, μετά την οποία δημιουργείται ένα νέο διακριτικό από τον διακομιστή και στη συνέχεια αποστέλλεται στον χρήστη.

Καταγραφή και παρακολούθηση

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

Περιορισμός ποσοστού

Εάν ένα API δεν εφαρμόζει περιορισμό ρυθμού, είναι ευάλωτο σε επιθέσεις DDoS λόγω της απροσδόκητης εισροής κίνησης δικτύου. Οι εισβολείς μπορούν να πλημμυρίσουν το σύστημα με έναν τεράστιο αριθμό αιτημάτων σε μικρό χρονικό διάστημα, με αποτέλεσμα να διακοπεί ο διακομιστής.

Τα API περιορισμού και περιορισμού του ρυθμού αποφεύγουν τις επιθέσεις άρνησης υπηρεσίας περιορίζοντας τη ροή της κυκλοφορίας API.

  18 Δεδομένα και στατιστικά των εργαζομένων για την κατανόηση των τάσεων στην απασχόληση (2023)

Ασφαλείς εξαρτήσεις

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

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

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

  • Cache-Control: Ρυθμίστε το σε no-store για να αποφύγετε την αποθήκευση ευαίσθητων πληροφοριών στο πρόγραμμα περιήγησης.
  • Content-Security-Policy: Η ρύθμιση του σε “κανένα” των προγόνων του πλαισίου αποτρέπει το πλαίσιο αποκρίσεων API σε ένα iframe.
  • Τύπος περιεχομένου: Αυτή η κεφαλίδα είναι σημαντική γιατί χωρίς αυτήν, το πρόγραμμα περιήγησης προσπαθεί να μαντέψει τον τύπο της απόκρισης API και μπορεί να οδηγήσει σε επιθέσεις sniffing. Για απάντηση JSON, μπορείτε να την ορίσετε σε application/json.
  • X-Content-Type-Options: Ρυθμίστε το σε nosniff για να δώσετε εντολή στο πρόγραμμα περιήγησης να μην μαντέψει τον τύπο MIME της απάντησης και να τον αναζητήσει μόνο στην κεφαλίδα Content-Type.

Πρότυπα και Πλαίσια Ασφαλείας

Σχεδιάστε το API σας με τη βοήθεια προκαθορισμένων προτύπων ασφαλείας και πλαισίων για να διασφαλίσετε ότι το API σας είναι ενημερωμένο με τα πιο πρόσφατα ζητήματα ασφαλείας.

Λήξη διακριτικού

Εάν χρησιμοποιείτε διακριτικά κομιστή, ο χρόνος λήξης του διακριτικού θα πρέπει να είναι σύντομος, επειδή απαιτεί εκ νέου έλεγχο ταυτότητας του χρήστη, κάτι που είναι θετικό. Στο JWT, υπάρχουν συνήθως δύο διακριτικά: κουπόνια πρόσβασης και ανανέωσης. Τα διακριτικά ανανέωσης έχουν μεγάλη διάρκεια ζωής, ενώ τα διακριτικά πρόσβασης είναι βραχύβια. Σε κάθε περίπτωση, τα token σας θα πρέπει να έχουν χρόνο λήξης.

Τείχος προστασίας εφαρμογών Ιστού

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

Χρήση πυλών API

Εάν θέλετε να ρυθμίσετε εύκολα την ασφάλεια API και να διαχειριστείτε τις διαδρομές API και την πρόσβασή τους, μπορείτε να αναζητήσετε πύλες API. Παρέχουν επίσης εργαλεία παρακολούθησης, καταγραφής και ανάλυσης, τα οποία μπορείτε να χρησιμοποιήσετε για την παρακολούθηση του API σας.

Μηδενική Εμπιστοσύνη

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

Βασικά, κανείς δεν μπορεί να εμπιστευτεί, ακόμη και τους προγραμματιστές που εργάζονται στο API. Κάθε πύλη πρέπει να παρακολουθείται και να αναλύεται για την αποφυγή παραβιάσεων της ασφάλειας.

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

Τελικές Λέξεις

Μπορείτε να κάνετε μόνο τόσα πολλά για να διατηρήσετε τα API σας ασφαλή. Υπάρχουν πάντα κάποια κενά στο λογισμικό που μπορούν να αξιοποιηθούν. Τέτοια κενά οδηγούν σε τρωτά σημεία μηδενικής ημέρας. Έτσι, για να προστατεύσετε τα API σας, το λιγότερο που μπορείτε να κάνετε είναι να τα διατηρείτε ενημερωμένα με τα πιο πρόσφατα πρότυπα ασφαλείας.

Ρίξτε μια ματιά στα καλύτερα εργαλεία δοκιμών ασφάλειας δυναμικών εφαρμογών.