Ασφάλεια & TLS

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 εξ ορισμού — χωρίς πρώτη επίσκεψη.

Πώς να το ενεργοποιήσεις

  1. Βεβαιώσου ότι όλα τα subdomains έχουν έγκυρα SSL πιστοποιητικά.
  2. Πρόσθεσε στον server το header με μικρό αρχικά max-age (π.χ. 1 εβδομάδα).
  3. Δοκίμασε για λίγες ημέρες — βεβαιώσου ότι όλα δουλεύουν.
  4. Ανέβασέ το σε 2 χρόνια (63072000) + includeSubDomains + preload.
  5. Υπέβαλε το domain στην preload list.
Προσοχή — δεν υπάρχει εύκολο reverse: Μόλις ο browser «θυμηθεί» HSTS με μεγάλο max-age, αν αργότερα σπάσει το SSL σου, οι χρήστες δεν μπορούν να επισκεφτούν το site — δεν επιτρέπεται καν το «προχώρα μου» στο warning page. Ξεκίνα με μικρό max-age και αύξησέ το σταδιακά.

Συχνά λάθη

  • HSTS σε domain που δεν έχει όλα τα subdomains σε HTTPS — αυτά «σπάνε».
  • Πρόωρο preload — αν δεν είσαι έτοιμος, μην το ζητήσεις. Η αφαίρεση παίρνει εβδομάδες.
  • HSTS χωρίς HTTPS: αν το header έρθει από HTTP response, οι browsers το αγνοούν.

Σχετικά εργαλεία

Σχετικοί όροι