Έλεγχος κεφαλίδων ασφαλείας

Επικόλληση των κεφαλίδων απόκρισης μιας σελίδας —curl -sI https://your-site.example/στο τερματικό, ή το μπλοκ από το πάνελ Δικτύου του προγράμματος περιήγησης — και λαμβάνεται μίαΒαθμός από A+ έως Fστη λίστα ελέγχου OWASP Secure Headers:Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, προστασία πλαισίου,Referrer-Policy, Permissions-Policy, η τριάδα απομόνωσης cross-origin, διαρροές έκδοσης, παρωχημένες κεφαλίδες και σημαίες cookie — κάθε εύρημα μαζί με το ακριβέςnginx, Apache και Expressγραμμές που το διορθώνουν. Όλα εκτελούνται στο πρόγραμμα περιήγησης· η σελίδα δεν επικοινωνεί ποτέ με τον ιστότοπο.
Η γραμμή κατάστασης είναι προαιρετική. Όλες οι γραμμές Set-Cookie ελέγχονται. Για να υπάρχει πολιτική προς βαθμολόγηση, δημιουργείται μία με τη Γεννήτρια CSP· για ανάλυση ενός μπλοκ κεφαλίδων γραμμή προς γραμμή, χρησιμοποιείται ο Αναλυτής κεφαλίδων HTTP.
Δεν υπάρχει βαθμολογία ακόμη. Επικόλληση κεφαλίδων απόκρισης και κλικ στο Έλεγχος κεφαλίδων, ή φόρτωση ενός δείγματος.
Οι γραμμές διόρθωσης για κάθε εύρημα εμφανίζονται εδώ μετά τον έλεγχο.
Εύρος αυτού του ελεγκτή σε σύγκριση με τον Έλεγχο SSL. Αυτή η σελίδα βαθμολογεί τις κεφαλίδες απόκρισης ασφαλείας (η λίστα OWASP παραπάνω). Ο Έλεγχος SSL βαθμολογεί τη ρύθμιση HTTPS: αλυσίδα πιστοποιητικού, εκδόσεις πρωτοκόλλου, ισχύ κρυπτογραφικών σουιτών και μικτό περιεχόμενο. Το HSTS και οι σημαίες cookie εμφανίζονται και στις δύο σελίδες επειδή και οι δύο λίστες τα περιλαμβάνουν, αλλά με διαφορετικές οπτικές - εκτελούνται και οι δύο έλεγχοι για την πλήρη εικόνα.
Αυτοέλεγχος
Επανεκτελεί τον βαθμολογητή έναντι σταθερών μπλοκ κεφαλίδων: το δείγμα καλής ρύθμισης στο A+, το δείγμα κακής ρύθμισης στο F με όλες τις αφαιρέσεις, κάθε κανόνας μεμονωμένα (η αριθμητική της βαθμολογίας), το ανώτατο όριο για διαρροή έκδοσης, οι συμβουλευτικές σημειώσεις cookie, οι σημειώσεις ποιότητας CSP, το frame-ancestors που μετράει ως προστασία πλαισίου, τα όρια βαθμών και στις δύο πλευρές κάθε ορίου, τα αποσπάσματα διόρθωσης, και τα αρνητικά μονοπάτια. Τίποτα δεν αποστέλλεται πουθενά.
Τι είναι οι κεφαλίδες ασφαλείας;
Σε μία πρόταση: οι κεφαλίδες ασφαλείας είναι κεφαλίδες απόκρισης που δίνουν εντολή στο πρόγραμμα περιήγησης να επιβάλει μια προστασία που δεν μπορεί να συμπεράνει μόνο του — να μη φορτώνει ποτέ σενάρια από άγνωστες προελεύσεις, να μη μιλά ποτέ ξανά απλό HTTP με αυτόν τον κεντρικό υπολογιστή, να μην εμφανίζει ποτέ αυτή τη σελίδα σε πλαίσιο — και κοστίζει μία γραμμή ρύθμισης η καθεμιά.
Οι κεφαλίδες που βαθμολογεί αυτή η σελίδα
ΚεφαλίδαΠροστατεύει απόΣυνιστώμενη τιμή OWASP
Strict-Transport-Securityυποβάθμιση πρωτοκόλλου και κλοπή cookie στο πρώτο αίτημα απλού HTTPmax-age=63072000; includeSubDomains
Content-Security-Policycross-site scripting, κακόβουλες ενσωματώσεις, μικτό περιεχόμενοdefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-Optionsσύγχυση MIME (σενάριο που σερβίρεται ως εικόνα)nosniff
X-Frame-Options / CSP frame-ancestorsclickjacking (η σελίδα πλαισιωμένη από επιτιθέμενο)deny / 'none'
Referrer-Policyδιαρροή διευθύνσεων URL (με διακριτικά) σε ιστότοπους τρίτωνno-referrer
Permissions-Policyσελίδες και ενσωματώσεις που χρησιμοποιούν σιωπηλά κάμερα, μικρόφωνο, γεωεντοπισμόόλες οι δυνατότητες απενεργοποιημένες
Cross-Origin-Opener-Policyάλλα παράθυρα που φτάνουν στο πλαίσιο περιήγησηςsame-origin
Cross-Origin-Embedder-Policyφόρτωση πόρων που δεν έχουν δηλώσει συμμετοχή (επιτρέπει την απομόνωση διεργασιών)require-corp
Cross-Origin-Resource-Policyοι πόροι του ιστοτόπου ενσωματωμένοι από άλλους ιστοτόπουςsame-origin
Πώς υπολογίζεται η βαθμολογία

Ξεκινά από το 100 και αφαιρούνται: −25 για απουσία CSP, −20 για απουσία HSTS, −10 το καθένα για απουσία X-Content-Type-Options, Referrer-Policy ή κάποιας προστασίας πλαισίου, −5 το καθένα για την τριάδα cross-origin και για το Permissions-Policy, −5 για διαρροές έκδοσης στο Server/X-Powered-By (με ανώτατο όριο), και −5 για μη μηδενικό X-XSS-Protection. Βαθμοί: 100 = A+, 90+ = A, 80+ = B, 70+ = C, 60+ = D, κάτω = F. Οι συμβουλευτικές σημειώσεις (σημαίες cookie, cache control, ποιότητα CSP) δεν αφαιρούν βαθμούς.

Συνηθισμένα λάθη
  • Ορισμός κεφαλίδων στις λάθος απαντήσεις. Προστίθενται σε κάθε απόκριση, συμπεριλαμβανομένων των σελίδων σφάλματος και των ανακατευθύνσεων - γι' αυτό υπάρχει το always στο add_header ... always; (nginx) και στο Header always set (Apache).
  • Έλεγχος μόνο της αρχικής σελίδας. Οι διακομιστές μεσολάβησης, οι προσωρινές μνήμες και οι παλαιές εφαρμογές συχνά αφαιρούν ή αντικαθιστούν κεφαλίδες μόνο σε ορισμένες διαδρομές. Ελέγχονται οι σελίδες που έχουν σημασία: σύνδεση, ταμείο, σημεία πρόσβασης API.
  • Η διατήρηση του X-XSS-Protection. Ο ελεγκτής που οδηγούσε προκάλεσε δικές του ευπάθειες· τα προγράμματα περιήγησης το αφαίρεσαν. Μια μη μηδενική τιμή κοστίζει πλέον βαθμολογία σκόπιμα - αφαιρείται το συγκεκριμένο και το CSP αναλαμβάνει τη δουλειά.
  • Η πεποίθηση ότι το X-Frame-Options είναι επικαιροποιημένο. Δεν μπορεί να επιτρέψει συγκεκριμένες προελεύσεις και δεν περιλαμβάνεται στο πρότυπο CSP· το frame-ancestors είναι η σύγχρονη αντικατάσταση. Η διατήρηση και των δύο κατά τη μετάβαση είναι εντάξει - αυτή η σελίδα δέχεται οποιοδήποτε από τα δύο.
  • Αποστολή πανό έκδοσης. Το Server: Apache/2.4.58 (Unix) στενεύει την αναζήτηση ενός επιτιθέμενου για γνωστά σφάλματα χωρίς κανένα όφελος. Η έκδοση αφαιρείται· μειώνεται ο αριθμός γραμμών.
Συχνές ερωτήσεις

Γιατί το COOP/COEP/CORP αξίζει μόνο 5 βαθμούς το καθένα; Η τριάδα είναι το νεότερο επίπεδο, απαιτείται κυρίως όπου επιδιώκεται απομόνωση διεργασιών (SharedArrayBuffer, θωράκιση έναντι Spectre). Ένας ιστότοπος χωρίς αυτά διατηρεί τις βασικές προστασίες του· με αυτά, ορισμένες ενσωματώσεις cross-origin χρειάζονται προσαρμογές - γι' αυτό ζυγίζουν λιγότερο από το CSP ή το HSTS.

Σημαίνει μια υψηλή βαθμολογία ότι ο ιστότοπος είναι ασφαλής; Όχι - σημαίνει ότι οι κεφαλίδες απόκρισης έχουν οριστεί. Οι κεφαλίδες ασφαλείας είναι ένα επίπεδο: η ρύθμιση TLS, ο χειρισμός συνεδριών, ο έλεγχος εισόδου και η ενημέρωση λογισμικού εξακολουθούν να καθορίζουν αν ο ιστότοπος είναι πράγματι ασφαλής. Ο Έλεγχος SSL καλύπτει το επίπεδο TLS.

Γιατί η τιμή του Permissions-Policy είναι τόσο μακρά; Η βασική γραμμή OWASP απενεργοποιεί ρητά κάθε δυνατότητα, ώστε ένα πρόγραμμα περιήγησης που προσθέτει νέες δυνατότητες να μην τις επανενεργοποιεί σιωπηλά. Μια μικρότερη τιμή όπως camera=(), microphone=(), geolocation=() είναι μια αρχή - αρκεί να γνωρίζει κανείς τι μένει ενεργό.

Μπορεί να ελεγχθούν οι κεφαλίδες οποιουδήποτε ιστοτόπου από εδώ; Η σελίδα δεν κάνει ποτέ αιτήματα δικτύου - βαθμολογεί ακριβώς το κείμενο που επικολλάται, οπότε λειτουργεί πίσω από τείχη προστασίας και σε εσωτερικούς κεντρικούς υπολογιστές, και τίποτα από όσα ελέγχονται δεν φεύγει από τη συσκευή. Η ανάκτηση των κεφαλίδων γίνεται με ένα curl -sI στο τερματικό.

Τι γίνεται με το Clear-Site-Data και το X-Permitted-Cross-Domain-Policies; Είναι χρήσιμα σε στενά σενάρια (αποκρίσεις αποσύνδεσης· παλαιοί προβολείς PDF/Flash). Εδώ είναι συμβουλευτικά, δεν βαθμολογούνται - η αποστολή του Clear-Site-Data σε κάθε απόκριση θα διέγραφε τον αποθηκευτικό χώρο των χρηστών σε κάθε φόρτωση σελίδας.