Το VPN είναι συνδεδεμένο αλλά το μικτό περιεχόμενο εξακολουθεί να αποκλείεται: τι να διορθώσετε
Ταξινομήστε το αποκλεισμένο URL κατά το ποιος το παρήγαγε, διορθώστε την αναφορά ή παραδώστε την στον ιδιοκτήτη του host, και μετά επιβεβαιώστε τη διόρθωση από την κονσόλα του προγράμματος περιήγησης.
Το μισό της σελίδας αποδίδεται, ένα φύλλο στυλ μένει γκρι στο πάνελ Δίκτυο, και ο πελάτης VPN εξακολουθεί να αναφέρει ένα υγιές τούνελ. Και οι τρεις παρατηρήσεις ισχύουν ταυτόχρονα, επειδή το πρόγραμμα περιήγησης έκρινε ένα αίτημα που έκανε η σελίδα και το τούνελ δεν είχε λόγο σε αυτή την κρίση. Αυτό που κλείνει την υπόθεση είναι μια απόφαση και όχι μια ρύθμιση: διόρθωση της αναφοράς, κλιμάκωσή της στον ιδιοκτήτη του host, ή εγκατάλειψη της εξάρτησης. Κάθε μια από αυτές τις επιλογές έχει φθηνή δοκιμή, και η λάθος επιλογή κοστίζει έναν κύκλο υποστήριξης.
Γιατί το τούνελ δεν μπορεί να καλύψει έναν υποπόρο
Το μικτό περιεχόμενο ξεκινά με ένα έγγραφο HTTPS που ζητά υποπόρο μέσω απλού HTTP. Κάθε URL κρίνεται με βάση το δικό του σχήμα, οπότε η προστασία του γονικού εγγράφου δεν επεκτείνεται ποτέ σε θυγατρικό αίτημα. Η κρυπτογράφηση που προστίθεται κάτω από το πρόγραμμα περιήγησης αλλάζει τι ταξιδεύει στο καλώδιο, όχι το http:// που ζήτησε η σήμανση.
Τα σημερινά προγράμματα περιήγησης χωρίζουν αυτά τα αιτήματα σε δύο ομάδες και τα χειρίζονται διαφορετικά. Σενάρια, φύλλα στυλ, iframe και κλήσεις μέσω fetch, XMLHttpRequest ή WebSocket απορρίπτονται αμέσως, χωρίς καμία προηγούμενη απόπειρα αναβάθμισης. Οι εικόνες, ο ήχος και το βίντεο ξαναγράφονται σε https:// και ζητούνται ξανά, και η φόρτωση εγκαταλείπεται όταν αποτυγχάνει αυτή η ασφαλής ανάκτηση. Ένα URL υποπόρου του οποίου ο host είναι γυμνή διεύθυνση IP εξαιρείται από την αναβάθμιση, οπότε μια εικόνα HTTP σε host IP παραμένει αποκλεισμένη αντί να διορθωθεί σιωπηλά. Ο διαχωρισμός, μαζί με αυτή την εξαίρεση στην πλευρά που αναβαθμίζεται, τεκμηριώνεται στον οδηγό του Mozilla για το μικτό περιεχόμενο. Το Chrome εφαρμόζει παρόμοια απόρριψη σε μη ασφαλείς λήψεις που ξεκινούν από ασφαλή σελίδα, γι' αυτό ένας σύνδεσμος PDF μπορεί να πεθάνει ενώ η γύρω σελίδα φαίνεται άθικτη.
Η γκρι γραμμή είναι επομένως απόδειξη ότι ο έλεγχος λειτουργεί, όχι απόδειξη ότι το τούνελ διέρρευσε απλό κείμενο. Αντιμετωπίστε τη γραμμή ως εύρημα που δείχνει μία αναφορά και όχι ολόκληρη τη σελίδα.
Καθορίστε σε ποιον ανήκει η μη ασφαλής αναφορά
Ταξινομήστε το προβληματικό URL κατά το πού παράγεται πριν αλλάξετε οτιδήποτε. Αυτή η απάντηση καθορίζει αν μπορείτε να κυκλοφορήσετε διόρθωση σήμερα, αν πρέπει ένας προμηθευτής να κυκλοφορήσει μία, ή αν η εξάρτηση πρέπει να εγκαταλείψει τη σελίδα. Διαβάστε την στη στήλη Initiator στο πάνελ Δίκτυο, επειδή η σήμανση στην οθόνη συναρμολογείται συχνά κατά την εκτέλεση.
| Από πού προέρχεται το URL | Ποιος μπορεί να το διορθώσει | Πρώτο βήμα |
|---|---|---|
| Κωδικοποιημένο σκληρά σε πρότυπο ή τμήμα που αναπτύσσετε | Εσείς | Αντικαταστήστε το με τη μορφή https:// και μετά αδειάστε την προσωρινή μνήμη |
| Έγινε έγχυση από διαχειριστή ετικετών ή πακέτο προμηθευτή | Ο προμηθευτής, με το δελτίο σας | Στείλτε το ακριβές URL, τον τύπο αιτήματος και τη γραμμή κονσόλας |
| Σερβίρεται μόνο στη θύρα 80 χωρίς ακροατή TLS | Ο ιδιοκτήτης του host | Ζητήστε TLS, βάλτε κάτι δικό σας μπροστά, ή εγκαταλείψτε το |
Όταν ο host απαντά ήδη στη θύρα 443 και μόνο η αναφορά λέει http, η διόρθωση είναι τοπική: αλλάξτε την αναφορά, αδειάστε την προσωρινή μνήμη της σελίδας και επιβεβαιώστε ότι η γραμμή γίνεται https. Ένας host που ακούει μόνο στη θύρα 80 δεν μπορεί να συμμορφωθεί με επεξεργασία, οπότε ο πόρος μετακομίζει, κάτι που ελέγχετε μπαίνει μπροστά του, ή εξαφανίζεται. Ένα URL που εγχέεται από διαχειριστή ετικετών συνεχίζει να εμφανίζεται ακόμη και όταν το δικό σας πρότυπο είναι καθαρό, και αυτή η περίπτωση ανήκει σε δελτίο με το ακριβές URL και τη γραμμή κονσόλας συνημμένα. Το να πείτε στο προσωπικό να επιτρέψει μη ασφαλές περιεχόμενο δεν είναι μία από αυτές τις επιλογές, γιατί απενεργοποιεί τον έλεγχο για κάθε ιστότοπο που επισκέπτεται αυτό το προφίλ περιήγησης.
Διορθώστε την αναφορά και όχι τη ρύθμιση του προγράμματος περιήγησης
Φορτώστε ξανά τη ροή που αποτυγχάνει με το αρχείο καταγραφής δικτύου διατηρημένο και φιλτράρετε το πάνελ κατά τον host που υποψιάζεστε. Η κονσόλα ονομάζει το URL και την οδηγία, που αποφασίζει αν ένα αίτημα απορρίφθηκε ή αναβαθμίστηκε πριν αγγίξετε ένα πρότυπο.
curl -sSI https://cdn.example.org/vendor.js | head -n 1
curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' -L https://cdn.example.org/vendor.jsΔύο υποστηρικτικοί έλεγχοι αξίζει να τους γνωρίζετε, και κανένας δεν αντικαθιστά τη διόρθωση. Μια κεφαλίδα Content-Security-Policy με upgrade-insecure-requests κάνει το πρόγραμμα περιήγησης να ξαναγράφει τα URL υποπόρων http πριν φύγουν από τη σελίδα, κάτι που πιάνει παλιές αναφορές που δεν έχετε βρει ακόμη. Το ξαναγραμμένο αίτημα εξακολουθεί να αποτυγχάνει όταν ο host προορισμού δεν σερβίρει HTTPS, οπότε η κεφαλίδα αλλάζει μόνο ποιο URL δοκιμάζει το πρόγραμμα περιήγησης. Το HSTS ισχύει ανά host, που σημαίνει ότι μια πολιτική στον δικό σας τομέα δεν κάνει τίποτα για ένα CDN τρίτου που δεν έστειλε ποτέ την κεφαλίδα. Μετά από αλλαγή προτύπου αδειάστε την προσωρινή μνήμη της σελίδας και αναζητήστε το παλιό όνομα host στο rendered HTML, γιατί το ίδιο URL μπορεί να έρθει και μέσω τμήματος, συμβολοσειράς μετάφρασης ή πεδίου βάσης δεδομένων.
Παρακολουθήστε και τις ανακατευθύνσεις, γιατί μια αλυσίδα που ξεκινά με https:// μπορεί να προσγειωθεί σε θέση http:// και το πρόγραμμα περιήγησης κρίνει το τελευταίο άλμα. Η μορφή της -L δεύτερης εντολής παραπάνω εκτυπώνει αυτό το πραγματικό URL για εσάς. Αν το τελευταίο άλμα είναι καθαρό http, η αναφορά παραμένει λανθασμένη ακόμη και αν ο σύνδεσμος που επεξεργαστήκατε φαινόταν εντάξει.
Επιβεβαιώστε τη σελίδα με την κονσόλα και το πάνελ δικτύου
Φορτώστε ξανά με απενεργοποιημένη την προσωρινή μνήμη και διατρέξτε ξανά τη ροή, μαζί με τα κουμπιά που φορτώνουν περιεχόμενο κατ' απαίτηση. Η πρώτη φόρτωση σελίδας κρύβει τεμπέλικα γραφικά στοιχεία, πλακίδια χάρτη και σενάρια αναπαραγωγέα που εμφανίζονται μόνο μετά από κλικ. Η κονσόλα δεν θα πρέπει να φέρει καταχωρίσεις μικτού περιεχομένου και κάθε γραμμή που αγγίξατε θα πρέπει να δείχνει https. Καταγράψτε την κονσόλα και τη γραμμή αιτήματος πριν κλείσετε το δελτίο, γιατί αυτή η κατάσταση είναι δύσκολο να αναπαραχθεί μετά την επόμενη ανάπτυξη.
Όταν ο πόρος ανήκει σε κάποιον άλλο, στείλτε τέσσερα πράγματα: το ακριβές URL, τον τύπο αιτήματος, το κείμενο της κονσόλας και τη σελίδα όπου εμφανίζεται. Αποκρύψτε τα αναγνωριστικά συνεδρίας σε ό,τι επικολλάτε σε δελτίο. Μια αναφορά που λέει μόνο ότι οι εικόνες είναι χαλασμένες δεν δίνει στον ιδιοκτήτη τίποτα να αναζητήσει.
Το τούνελ συνεχίζει να κάνει τη δική του δουλειά όσο η διόρθωση βρίσκεται στην αναφορά που παρήγαγε το αίτημα. Μετά την ανάπτυξη αναζητήστε το όνομα host μία ακόμη φορά στο πρότυπο και στο πακέτο του προμηθευτή, και κλείστε την υπόθεση μόνο όταν δεν μένει καμία αποκλεισμένη καταχώριση μικτού περιεχομένου στην κονσόλα.