Τι είναι το HSTS;

Το HSTS είναι μια κεφαλίδα απόκρισης ασφάλειας ιστού. Το όνομα είναι ακρωνύμιο του «HTTP Strict Transport Security». Η λειτουργία της κεφαλίδας HSTS είναι να αναγκάζει τα προγράμματα περιήγησης να συνδέονται σε ιστότοπους χρησιμοποιώντας HTTPS.

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

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

Η κεφαλίδα HSTS έχει δύο υποχρεωτικά μέρη και δύο προαιρετικά. Το όνομα της κεφαλίδας "Strict-Transport-Security" και, στη συνέχεια, ο τελεστής και η τιμή "max-age" είναι και τα δύο υποχρεωτικά. Ένα άλλο ζεύγος τελεστών, το "includeSubDomains" και το "preload" χρησιμοποιούνται επίσης μερικές φορές.

Όταν το πρόγραμμα περιήγησης λαμβάνει μια απόκριση HTTPS με την κεφαλίδα HSTS, λαμβάνει οδηγίες να συνδεθεί σε αυτόν τον ιστότοπο και όλους τους πόρους σε αυτόν, χρησιμοποιώντας αποκλειστικά HTTPS για τη διάρκεια του χρονοδιακόπτη «μέγ. ηλικίας». Το "Max-age" είναι μια μεταβλητή που περιγράφει πόσο χρόνο πρέπει να απομνημονεύεται μια ρύθμιση από το πρόγραμμα περιήγησης. Η τιμή του "max-age" αναφέρεται σε δευτερόλεπτα, η συνιστώμενη τιμή είναι "31536000", που είναι ένα έτος.

Η ιδέα είναι ότι κατά τη διάρκεια αυτού του χρονοδιακόπτη, που επαναφέρεται με κάθε επόμενη φόρτωση σελίδας, το πρόγραμμα περιήγησης θα απαιτεί σύνδεση HTTPS και θα απορρίπτει τυχόν πόρους HTTP. Αυτό προστατεύει από επιθέσεις "person-in-the-middle", όπου ένας χάκερ μεταξύ εσάς και του διακομιστή ιστού μπορεί να χειραγωγήσει τις απαντήσεις που λαμβάνετε.

Το κύριο σημείο στο οποίο αυτό σας προστατεύει είναι η πρώτη σύνδεση. Συνήθως, όταν συνδέεστε σε έναν ιστότοπο, μπορείτε να ζητήσετε τον ιστότοπο HTTP και, στη συνέχεια, να προωθηθείτε στον ιστότοπο HTTPS. Δυστυχώς, ένας χάκερ σε ένα άτομο στη μέση θα μπορούσε να αποτρέψει αυτήν την αναβάθμιση σε HTTPS και στη συνέχεια θα μπορούσε να κλέψει ή να παρακολουθήσει τη δραστηριότητά σας στον ιστότοπο. Ωστόσο, όταν η κεφαλίδα HSTS εμφανιστεί από το πρόγραμμα περιήγησης, το πρόγραμμα περιήγησής σας θα πραγματοποιήσει ακόμη και την πρώτη σύνδεση μέσω HTTPS, προστατεύοντάς σας από τους χάκερ.

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

Ο τελεστής "includeSubDomains" χρησιμοποιείται για να υποδείξει ότι η κεφαλίδα πρέπει επίσης να ισχύει για όλους τους υποτομείς του ιστότοπου.

Η λίστα προφόρτωσης HSTS

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

Συμβουλή: Απαιτείται μια «μέγιστη ηλικία» ενός έτους ή περισσότερο για να προστεθεί στη λίστα προφόρτωσης HSTS.

Ζητήματα με HSTS

Ένα από τα κύρια σημεία του HSTS είναι ότι παρουσιάζει ένα μήνυμα σφάλματος εάν υπάρχουν προβλήματα με τη σύνδεση HTTPS. Ως πρόσθετο μέτρο ασφαλείας, οι χρήστες δεν υποτίθεται ότι μπορούν να παρακάμψουν μηνύματα σφάλματος HSTS, όπως θα μπορούσαν να κάνουν με κανονικά σφάλματα HTTPS.

Δυστυχώς, αυτό μπορεί να προκαλέσει προβλήματα εάν μια εταιρεία διαθέσει HSTS πριν από ολόκληρο τον ιστότοπο και κάθε πόρος που χρησιμοποιείται σε αυτόν υποστηρίζει HTTPS. Σε αυτήν την περίπτωση, οι χρήστες θα αρχίσουν να βλέπουν μηνύματα σφάλματος ασφαλείας HSTS που δεν μπορούν να παρακάμψουν, ουσιαστικά παραβιάζοντας εντελώς τον ιστότοπο. Το χειρότερο μέρος είναι ότι η απλή κατάργηση της κεφαλίδας HSTS δεν διορθώνει το πρόβλημα για αυτούς τους χρήστες, καθώς το πρόγραμμα περιήγησής τους θα συνεχίσει να επιβάλλει το HSTS για τη «μέγιστη ηλικία» που μπορεί να διαρκεί μήνες.

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

Συμβουλή: Είναι επίσης δυνατό να ορίσετε μια "μέγιστη ηλικία" 0, αυτό ουσιαστικά αφαιρεί την αποθηκευμένη καταχώρηση HSTS από οποιονδήποτε τη βλέπει. Αυτό μπορεί να βοηθήσει εάν υπάρχει κάποιο πρόβλημα, αλλά θα επηρεάσει τους χρήστες μόνο όταν και εάν αποφασίσουν να δοκιμάσουν ξανά.