Defaults.Exposed › Διορθώσεις › Προστασία clickjacking (X-Frame-Options)
Πώς να διορθώσετε Προστασία clickjacking (X-Frame-Options)
Μια οδηγία μιας γραμμής που λέει στα προγράμματα περιήγησης να μην επιτρέπουν σε άλλους ιστότοπους να φορτώνουν αθόρυβα τον ιστότοπό σας μέσα στον δικό τους. Χωρίς αυτό, ένας απατεώνας μπορεί να κρύψει τις πραγματικές, συνδεδεμένες σελίδες σας πίσω από ψεύτικη σελίδα και να εξαπατήσει τους πελάτες σας να κάνουν κλικ σε πράγματα που δεν σκοπεύαν — εγκρίνοντας πληρωμή, αλλάζοντας κωδικό, χορηγώντας πρόσβαση.
Ουσία για την επιχείρησή σας: Ένας απατεώνας μπορεί να τυλίξει αόρατα τον ζωντανό ιστότοπό σας μέσα σε ψεύτικο και να κλέψει χρήματα ή πρόσβαση λογαριασμού από τους συνδεδεμένους πελάτες σας — και στον πελάτη φαίνεται ότι το έκανε ο ιστότοπός σας. Η διόρθωση είναι δωρεάν και χρειάζεται από developer περίπου 15 λεπτά.
Τι μπορεί να σας κοστίσει αυτό
- Ένας απατεώνας κρύβει τη πραγματική σελίδα σύνδεσης ή πληρωμής πίσω από μια αθώα φαινόμενη σελίδα και εξαπατά έναν πελάτη να 'επιβεβαιώσει' μεταφορά ή αλλαγή ρύθμισης χωρίς να το συνειδητοποιεί — ο πελάτης σας κατηγορεί, όχι τον εισβολέα.
- Η συνδεδεμένη περιοχή λογαριασμού σας φορτώνεται αόρατα πάνω από σελίδα 'Κερδίσατε — κάντε κλικ για να διεκδικήσετε'· το κλικ στην πραγματικότητα εγκρίνει αληθινή αλλαγή στον λογαριασμό του πελάτη.
- Η ομάδα ΙΤ υποψήφιου εκτελεί γρήγορη σάρωση ασφαλείας πριν υπογράψει, βλέπει ότι ο ιστότοπός σας μπορεί να ενσωματωθεί από οποιονδήποτε, και το επισημαίνει ως κίνδυνο που σταματά ή ακυρώνει τη συμφωνία.
- Το brand σας γίνεται το δόλωμα σε εκστρατεία απάτης· πελάτες που παγιδεύτηκαν το θυμούνται ως 'η εταιρεία που ο ιστότοπός της το επέτρεψε.'
- Σάρωση ελεγκτή ή ασφάλισης στον κυβερνοχώρο αναφέρει ελλείπουσα προστασία clickjacking ως βασική αποτυχία υγιεινής.
Γιατί έχει σημασία. Αυτή είναι μια δωρεάν, μια-γραμμή ρύθμιση που χρειάζεται λεπτά για να προστεθεί, και κλείνει μια ολόκληρη κατηγορία απατηλής δράσης που στοχεύει τους συνδεδεμένους πελάτες σας. Στη βαθμολογία μας είναι ένας αξίζων-πραγματικούς-βαθμούς έλεγχος web-ασφαλείας υψηλής σοβαρότητας.
Με απλά λόγια
Όταν κάποιος επισκέπτεται τον ιστότοπό σας, το πρόγραμμα περιήγησής του μπορεί επίσης να φορτώσει τον ιστότοπό σας μέσα σε άλλον ιστότοπο — σαν μικρό παράθυρο ενσωματωμένο σε μεγαλύτερη σελίδα. Αυτό ακούγεται αβλαβές, και μερικές φορές είναι. Αλλά είναι ο μηχανισμός πίσω από μια επίθεση που ονομάζεται clickjacking.
Να πώς λειτουργεί το κόλπο. Ένας απατεώνας χτίζει τη δική του σελίδα και αθόρυβα φορτώνει τον πραγματικό σας ιστότοπο μέσα της — αόρατα, εντελώς διαφανή. Μετά βάζει το δικό του περιεχόμενο από πάνω: ένα λαμπερό κουμπί, ένα «Αναπαραγωγή βίντεο», ένα «Διεκδικήστε το δώρο σας.» Ο πελάτης βλέπει τη σελίδα του εισβολέα και κάνει κλικ σε αυτό που φαίνεται αβλαβές κουμπί. Αλλά επειδή ο πραγματικός σας ιστότοπος κάθεται αόρατα κάτω από τον κέρσορά τους, το κλικ πέφτει στη δική σας σελίδα — επιβεβαιώνοντας πληρωμή, αλλάζοντας κωδικό, εγκρίνοντας πρόσβαση.
Η προστασία clickjacking είναι μια σύντομη, αόρατη οδηγία που ο ιστότοπός σας στέλνει στο πρόγραμμα περιήγησης κάθε επισκέπτη:
«Μην αφήνεις άλλους ιστότοπους να με φορτώνουν μέσα τους. Αν κάποιος το δοκιμάσει, αρνήσου.»
Τι μπορεί να σας κοστίσει
-
Το αόρατο «επιβεβαιώνω». Ένας πελάτης είναι συνδεδεμένος στην πύλη λογαριασμού σας. Καταλήγει σε σελίδα που υπόσχεται κάτι δελεαστικό με μεγάλο κουμπί «Συνέχεια». Κρυμμένο κάτω από αυτό το κουμπί είναι το πραγματικό «Επιβεβαίωση μεταφοράς» ή «Αλλαγή email». Κάνουν κλικ «Συνέχεια» — και ανεπίγνωστα εξουσιοδοτούν αληθινή αλλαγή στον λογαριασμό τους μαζί σας.
-
Η αρπαγή ρυθμίσεων. Ένας εισβολέας πλαισιώνει τη σελίδα ρυθμίσεων λογαριασμού σας. Μερικά κλικ στα σωστά σημεία αναστρέφουν αθόρυβα μια ρύθμιση — προσθέτοντας email του εισβολέα ως διεύθυνση ανάκτησης.
-
Η συμφωνία που σταματά. Ένας μεγαλύτερος πελάτης στέλνει το τυπικό ερωτηματολόγιο ασφαλείας πριν υπογράψει. Μια γραμμή ρωτά αν ο ιστότοπός σας ορίζει προστασία κατά-πλαισίωσης. Η επαφή σας στο ΙΤ πρέπει να απαντήσει «όχι».
-
Η εκστρατεία brand-ως-δόλωμα. Επειδή οι πραγματικές, αξιόπιστες σελίδες σας μπορούν να ενσωματωθούν, ένας εισβολέας χρησιμοποιεί τη δική σας σύνδεση ή checkout ως πειστικό επίπεδο σε ευρύτερη εκστρατεία phishing.
Τι είναι στην πραγματικότητα
Υπάρχουν δύο headers, και ο έλεγχός μας περνά αν κάποια από τις δύο υπάρχει:
1. Η παλαιότερη header — X-Frame-Options:
X-Frame-Options: SAMEORIGIN
SAMEORIGIN— ο ίδιος σας ο ιστότοπος μπορεί να ενσωματώνει τις δικές του σελίδες, αλλά κανένας εξωτερικός ιστότοπος δεν μπορεί.DENY— κανείς δεν μπορεί να ενσωματώσει τις σελίδες σας.
2. Η σύγχρονη header — CSP frame-ancestors:
Content-Security-Policy: frame-ancestors 'self';
Αυτή είναι πιο ευέλικτη και επιτρέπει ακριβή καθορισμό ποιος μπορεί να σας ενσωματώνει.
Πώς να το διορθώσετε (δωρεάν, ~15 λεπτά)
Nginx:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Content-Security-Policy "frame-ancestors 'self';" always;
Apache:
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Content-Security-Policy "frame-ancestors 'self';"
Microsoft IIS — σε web.config:
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="Content-Security-Policy" value="frame-ancestors 'self';" />
Cloudflare: Rules → Transform Rules → Modify Response Header — προσθέστε και τα δύο.
Αν στέλνετε ήδη CSP για άλλους λόγους; Μην δημιουργείτε δεύτερη header CSP — προσθέστε frame-ancestors στην υπάρχουσα πολιτική σας.
Συνηθισμένα λάθη
- Χρήση report-only CSP και υπόθεση ότι προστατεύεστε. Το
Content-Security-Policy-Report-Onlyμόνο αναφέρει παραβιάσεις — δεν επιβάλλει τίποτα. - Ορισμός δύο ξεχωριστών headers
Content-Security-Policy. Αν έχετε ήδη CSP, προσθέστεframe-ancestorsσε αυτήν αντί να εκπέμψετε δεύτερη πολιτική. - Ορισμός
DENYόταν ο ίδιος σας ο ιστότοπος ενσωματώνει τις δικές του σελίδες. ΧρησιμοποιήστεSAMEORIGINαν οποιοδήποτε μέρος του ιστότοπου σας χρησιμοποιεί iframes. - Προστασία μόνο της αρχικής σελίδας. Οι σελίδες που έχουν σημασία για clickjacking είναι οι συνδεδεμένες — ρυθμίσεις λογαριασμού, επιβεβαίωση πληρωμής, διαχείριση. Βεβαιωθείτε ότι οι headers εφαρμόζονται σε ολόκληρο τον ιστότοπο.
- Υπόθεση ότι το HTTPS ή το λουκέτο το καλύπτει αυτό. Η κρυπτογράφηση και η αντι-πλαισίωση δεν σχετίζονται.
Συχνές Ερωτήσεις
Δεν είμαι τεχνικός — μπορώ να το χειριστώ μόνος μου;
Δεν χρειάζεται να κάνετε το τεχνικό μέρος. Είναι μια μόνο ρύθμιση που προσθέτεται στον server ή CDN σας, και οποιοσδήποτε web developer ή IT πάροχος μπορεί να την προσθέσει σε λίγα λεπτά. Δώστε τους την ενότητα 'Πώς να το διορθώσετε' παρακάτω. Η διόρθωση είναι δωρεάν.
Θα σταματήσει αυτό τον ίδιο μου τον ιστότοπο, ή νόμιμους συνεργάτες, από το να εμφανίζουν σελίδες μου;
Μόνο αν το ορίσετε πολύ αυστηρά. Η κοινή ρύθμιση ('SAMEORIGIN', ή 'frame-ancestors self') επιτρέπει ακόμα στον ίδιο σας τον ιστότοπο να ενσωματώνει τις δικές του σελίδες κανονικά — μπλοκάρει μόνο εξωτερικούς ιστότοπους.
Είμαστε μικρή επιχείρηση — θα μπαίνε στον κόπο να μας στοχεύσουν;
Αυτές οι επιθέσεις εκτελούνται χύμα από αυτοματοποιημένα εργαλεία, όχι χειροπρόσωπα επιλεγμένα. Μικρότεροι ιστότοποι συχνά χτυπιούνται ακριβώς επειδή λείπουν βασικές προστασίες. Το κλείσιμο του κενού δεν κοστίζει τίποτα.
Πώς μοιάζει το 'καλό' στην πράξη;
Είτε header X-Frame-Options ορισμένη σε SAMEORIGIN (ή DENY), είτε CSP με directive frame-ancestors — ιδανικά και τα δύο. Ο έλεγχός μας περνά αν υπάρχει ένα από τα δύο.
Δεν είναι αυτό το ίδιο με το SSL λουκέτο ή το HTTPS;
Όχι — προστατεύουν από εντελώς διαφορετικά πράγματα. Το HTTPS κρυπτογραφεί τη σύνδεση. Η προστασία clickjacking σταματά τις σελίδες σας να φορτώνονται μέσα σε ιστότοπο κάποιου άλλου.
Αν δεν το διορθώσουμε, χαμηλώνει τη βαθμολογία μας;
Ναι. Αυτός είναι βαθμολογούμενος έλεγχος web-ασφαλείας, όχι πληροφοριακός — μια ελλείπουσα header κοστίζει βαθμούς και βαθμολογείται υψηλής σοβαρότητας.