Τι Είναι τα 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: εφαρμόζεται και σε subdomainspreload: εγγραφή στο HSTS preload list (μη το βάζεις αν δεν είσαι έτοιμος)
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 δεν είναι ρυθμισμένος |
Συχνές Ερωτήσεις
Content-Security-Policy-Report-Only για να δεις παραβιάσεις χωρίς να μπλοκαριστεί τίποτα.