SSL & Ασφάλεια 6 λεπτά ανάγνωση

Τι Είναι τα HTTP Security Headers και Πώς να τα Ρυθμίσεις

Πλήρης οδηγός για HTTP security headers — HSTS, CSP, X-Frame-Options, Referrer-Policy — τι κάνει το καθένα και πώς να τα προσθέσεις στον server σου.

Τι Είναι τα HTTP Security Headers;

Τα HTTP security headers είναι headers που επιστρέφει ο server σου με κάθε response και «λένε» στον browser πώς να χειριστεί το περιεχόμενο με ασφάλεια. Δεν αντικαθιστούν το SSL αλλά προσθέτουν επιπλέον επίπεδα προστασίας από XSS, clickjacking, data injection και άλλες επιθέσεις.

Το Google, η Mozilla και η OWASP τα συνιστούν ανεπιφύλακτα. Τα sites χωρίς αυτά παίρνουν χαμηλό security score από εργαλεία όπως το Security Headers Checker.

Τα 7 Βασικά Security Headers

1. Strict-Transport-Security (HSTS)

Λέει στον browser να χρησιμοποιεί ΜΟΝΟ HTTPS για το domain σου — ακόμα και αν ο χρήστης πληκτρολογήσει http://. Εξαλείφει SSL stripping attacks.

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • max-age: πόσες δευτερόλεπτα ο browser θυμάται (31536000 = 1 χρόνος)
  • includeSubDomains: εφαρμόζεται και σε subdomains
  • preload: εγγραφή στο HSTS preload list (μη το βάζεις αν δεν είσαι έτοιμος)
⚠️ Προσοχή: Πριν ενεργοποιήσεις HSTS βεβαιώσου ότι το HTTPS λειτουργεί παντού — μετά δεν μπορείς εύκολα να επιστρέψεις σε HTTP.

2. Content-Security-Policy (CSP)

Ο πιο ισχυρός header — ορίζει ακριβώς από πού επιτρέπεται να φορτώνονται scripts, styles, images, fonts. Αποτρέπει XSS attacks σε μεγάλο βαθμό.

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; img-src *

Ξεκίνα με Content-Security-Policy-Report-Only για να δεις παραβιάσεις χωρίς να σπάσεις τίποτα πριν ενεργοποιήσεις πλήρως.

3. X-Frame-Options

Αποτρέπει το site σου να φορτωθεί μέσα σε <iframe> άλλου domain (clickjacking). Αντικαταστάθηκε τεχνικά από το CSP frame-ancestors αλλά εξακολουθεί να χρειάζεται για παλιούς browsers.

X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN

4. X-Content-Type-Options

Αποτρέπει τον browser από το MIME type sniffing — ο browser ακολουθεί ακριβώς το Content-Type που δηλώνεις αντί να «μαντεύει».

X-Content-Type-Options: nosniff

5. Referrer-Policy

Ελέγχει τι URL στέλνεται στο Referer header όταν ο χρήστης κάνει κλικ σε εξωτερικό link. Προστατεύει URL parameters με ευαίσθητα δεδομένα.

Referrer-Policy: strict-origin-when-cross-origin

6. Permissions-Policy

Ελέγχει πρόσβαση σε browser APIs (camera, microphone, geolocation, fullscreen). Αντικατέστησε το παλιό Feature-Policy.

Permissions-Policy: camera=(), microphone=(), geolocation=()

7. Cross-Origin Headers (COOP/COEP/CORP)

Τριάδα headers για isolation του tab από άλλα origins — απαραίτητο αν χρησιμοποιείς SharedArrayBuffer ή performance.measureUserAgentSpecificMemory().

Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: same-origin

Ελέγξτε ποια security headers υπάρχουν ή λείπουν από το site σας:

→ Security Headers Checker

Πώς να Προσθέσεις Headers στον Server σου

Apache (.htaccess)

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
  Header always set X-Frame-Options "SAMEORIGIN"
  Header always set X-Content-Type-Options "nosniff"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>

Nginx

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

PHP (Laravel)

Στο middleware ή στο bootstrap/app.php:

$response->headers->set('X-Frame-Options', 'SAMEORIGIN');
$response->headers->set('X-Content-Type-Options', 'nosniff');
$response->headers->set('Referrer-Policy', 'strict-origin-when-cross-origin');

Security Score — Τι Σημαίνει

ScoreΚατάστασηΤι λείπει;
A / A+ΆριστοΌλοι οι βασικοί headers παρόντες
BΚαλόΛείπει CSP ή HSTS χωρίς preload
C / DΜέτριοΑρκετοί headers απόντες
FΚακόΚανένας header δεν είναι ρυθμισμένος

Συχνές Ερωτήσεις

Είναι υποχρεωτικά τα security headers;
Όχι τεχνικά, αλλά χωρίς αυτά το site σου είναι εκτεθειμένο σε XSS, clickjacking και άλλες επιθέσεις. Το Google Chrome εμφανίζει προειδοποιήσεις και security scanners δίνουν χαμηλό score.
Το CSP μπορεί να σπάσει το site μου;
Ναι αν δεν το ρυθμίσεις σωστά — θα μπλοκαριστούν inline scripts ή εξωτερικά CDN. Χρησιμοποίησε πρώτα Content-Security-Policy-Report-Only για να δεις παραβιάσεις χωρίς να μπλοκαριστεί τίποτα.
Τι διαφορά κάνει το HSTS preload;
Με το preload, το domain σου μπαίνει στη λίστα που είναι hardcoded μέσα στους browsers — ακόμα και η πρώτη επίσκεψη γίνεται HTTPS, πριν ο browser δει το header. Μη το ενεργοποιείς αν δεν είσαι 100% σίγουρος ότι θα κρατάς HTTPS για πάντα.
Επηρεάζουν τα security headers το SEO;
Έμμεσα ναι — το HSTS βοηθά το Google να σε indexάρει γρηγορότερα. Το X-Frame-Options προλαμβάνει unauthorized embedding. Κυρίως όμως επηρεάζουν trust signals και security ratings που μπορούν να επηρεάσουν conversions.

Δοκιμάστε αμέσως

Σχετικοί οδηγοί

Αναφορά σφάλματος