HSTS — HTTP Strict Transport Security
HTTP header που αναγκάζει τους browsers να συνδέονται πάντα μέσω HTTPS.
Τι είναι το HSTS
Το HSTS (HTTP Strict Transport Security) είναι ένα HTTP response header που
λέει στον browser: «από εδώ και στο εξής, για X χρόνο, μην προσπαθήσεις ποτέ να συνδεθείς σε
αυτό το domain μέσω HTTP — μόνο HTTPS». Έτσι, ακόμη κι αν κάποιος πληκτρολογήσει
http://example.com ή κλικάρει σε ένα παλιό http:// link, ο browser θα κάνει
αυτόματα upgrade σε HTTPS, χωρίς καν να ανοίξει την HTTP σύνδεση.
Χωρίς HSTS, η πρώτη επίσκεψη μέσω HTTP (πριν το redirect σε HTTPS) είναι ευάλωτη σε SSL stripping και man-in-the-middle επιθέσεις.
Παράδειγμα HSTS header
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Στοιχεία:
max-age=63072000— δύο χρόνια σε δευτερόλεπτα. Ο browser θα θυμάται την οδηγία τόσο.includeSubDomains— εφαρμόζεται και σε όλα τα subdomains.preload— δηλώνεις ότι θες να μπει το domain σου στη preload list του browser.
HSTS Preload List
Κανονικά, το HSTS ενεργοποιείται μετά την πρώτη επιτυχημένη HTTPS επίσκεψη. Αλλά αυτή η πρώτη επίσκεψη μπορεί ακόμη να είναι ευάλωτη. Η λύση είναι η HSTS Preload List: μια hard-coded λίστα domains που υπάρχει μέσα στους browsers (Chrome, Firefox, Safari, Edge), και τα οποία θεωρούνται HTTPS-only εξ ορισμού — χωρίς πρώτη επίσκεψη.
Πώς να το ενεργοποιήσεις
- Βεβαιώσου ότι όλα τα subdomains έχουν έγκυρα SSL πιστοποιητικά.
- Πρόσθεσε στον server το header με μικρό αρχικά
max-age(π.χ. 1 εβδομάδα). - Δοκίμασε για λίγες ημέρες — βεβαιώσου ότι όλα δουλεύουν.
- Ανέβασέ το σε 2 χρόνια (
63072000) +includeSubDomains+preload. - Υπέβαλε το domain στην preload list.
Συχνά λάθη
- HSTS σε domain που δεν έχει όλα τα subdomains σε HTTPS — αυτά «σπάνε».
- Πρόωρο preload — αν δεν είσαι έτοιμος, μην το ζητήσεις. Η αφαίρεση παίρνει εβδομάδες.
- HSTS χωρίς HTTPS: αν το header έρθει από HTTP response, οι browsers το αγνοούν.