Ένα VPN δεν μπορεί να απενεργοποιήσει το CORS, αλλάζει την απόκριση
Μια νέα διεύθυνση εξόδου δεν κάνει δύο προελεύσεις ίδιες. Καταγράψτε τις κεφαλίδες απόκρισης και στις δύο διαδρομές και συγκρίνετε τις πριν κατηγορήσετε την εφαρμογή του CORS.
Ξεκινήστε χωρίζοντας δύο πράγματα που άλλαξαν ταυτόχρονα: τη διαδρομή δικτύου και την επιβολή από το πρόγραμμα περιήγησης. Ένα VPN αλλάζει τη διεύθυνση εξόδου· δεν αλλάζει την προέλευση της σελίδας, η οποία αποτελείται από σχήμα, κεντρικό υπολογιστή και θύρα. Αν το αίτημα τώρα πετυχαίνει, κάτι άλλαξε στην απόκριση ή άλλαξε το ίδιο το αίτημα. Το να βρείτε ποιο από τα δύο είναι όλη η έρευνα.
Το CORS είναι πρωτόκολλο κεφαλίδων που επιβάλλει το πρόγραμμα περιήγησης, άρα τίποτα στη διαδρομή δικτύου δεν μπορεί να το απενεργοποιήσει.
Η προέλευση δεν είναι διεύθυνση IP
Η προέλευση είναι σχήμα, κεντρικός υπολογιστής και θύρα. Δεν είναι η διεύθυνση από την οποία φεύγουν τα πακέτα και δεν είναι η IP που βλέπει ο διακομιστής. Γι’ αυτό ένα VPN μπορεί να αλλάξει κάθε παρατηρήσιμη διεύθυνση και να αφήσει την προέλευση ίδια. Το πρόγραμμα περιήγησης συγκρίνει το Access-Control-Allow-Origin της απόκρισης με την προέλευση της σελίδας, και η διεύθυνση εξόδου δεν μπαίνει ποτέ σε αυτή τη σύγκριση.
Άρα μια επέκταση ή ένας διαμεσολαβητής που φαίνεται να διορθώνει σφάλμα CORS κάνει κάτι άλλο: ξαναγράφει κεφαλίδες ή δρομολογεί το αίτημα ώστε να μην είναι πια cross-origin. Κανένα από τα δύο δεν είναι ιδιότητα του VPN.
Τι στέλνει πραγματικά το πρόγραμμα περιήγησης
Για ένα αίτημα cross-origin που δεν είναι απλό, το πρόγραμμα περιήγησης στέλνει πρώτα μια προκαταρκτική επαλήθευση OPTIONS, που φέρει τη μέθοδο και τις κεφαλίδες που προορίζονται. Ο διακομιστής πρέπει να απαντήσει με τις άδειες που επιτρέπει, και το πραγματικό αίτημα ακολουθεί μόνο αν αυτή η απάντηση ικανοποιεί τους κανόνες. Ένα VPN αλλάζει τη διαδρομή που μεταφέρει και τις δύο ανταλλαγές και μπορεί να αλλάξει τι απαντούν οι ενδιάμεσες υπηρεσίες. Δεν αλλάζει τη συμβολοσειρά προέλευσης ούτε την απαίτηση της προκαταρκτικής επαλήθευσης.
Ένας πελάτης γραμμής εντολών συνήθως δεν δείχνει τίποτα από αυτά. Μπορεί να μη στέλνει κεφαλίδα Origin, συχνά παραλείπει την προκαταρκτική επαλήθευση και μπορεί να φέρει διαφορετικά διαπιστευτήρια. Ένα σώμα που επιστρέφεται στο curl αποδεικνύει ότι ο διακομιστής απάντησε στο curl.
Βρείτε την απόκριση που άλλαξε
Συγκρίνετε την πραγματική απόκριση σε κάθε διαδρομή, όχι μόνο τον κωδικό κατάστασης. Κοιτάξτε τις κεφαλίδες που φέρουν άδειες CORS, τον τύπο περιεχομένου, τυχόν ανακατεύθυνση και αν μια παραλλαγή WAF ή CDN παρήγαγε διαφορετική σελίδα. Μια περιφερειακή άρνηση, μια ανακατεύθυνση ταυτοποίησης ή μια σελίδα σφάλματος χωρίς την κεφαλίδα άδειας αποτυγχάνουν όλα στο πρόγραμμα περιήγησης, ενώ μοιάζουν με σφάλμα CORS. Αυτές είναι διαφορές στη διαδρομή παράδοσης, και αυτές πρέπει να τεκμηριωθούν.
Καταγράψτε τις κεφαλίδες απόκρισης και από τις δύο διαδρομές και συγκρίνετε τις γραμμή προς γραμμή. Αν η μόνη διαφορά είναι το Access-Control-Allow-Origin που λείπει από μία σελίδα σφάλματος, βρήκατε την αιτία.
Διορθώστε την υπηρεσία, όχι την επιβολή
Όταν η υπηρεσία είναι δική σας, δηλώστε ρητά τις επιτρεπόμενες προελεύσεις και τις δυνατότητες του αιτήματος και μετά διαβάστε τα σφάλματα που παράγουν το frontend και οι ενδιάμεσοι. Αν δεν το κάνετε, στείλτε στον ιδιοκτήτη της υπηρεσίας μια καθαρισμένη σύγκριση. Μην περιλαμβάνετε ποτέ cookies, κεφαλίδες εξουσιοδότησης ή εξαγωγές συνεδρίας σε αυτή την αναφορά, γιατί αυτά είναι τα διαπιστευτήρια που υπάρχει για να προστατεύει η πολιτική.
Αποφύγετε τις επεκτάσεις περιήγησης που απενεργοποιούν το CORS. Αλλάζουν το όριο ασφαλείας ενώ κρύβουν τη διαφορά απόκρισης που έπρεπε να εξηγηθεί, και αφήνουν την ίδια αποτυχία σε ισχύ για κάθε άλλο χρήστη.
Καταγράψτε και τις δύο αποκρίσεις, την προέλευση που χρησιμοποιήθηκε και τη διαδρομή που ακολουθήθηκε. Αυτή η καταγραφή μετατρέπει μια φήμη για VPN σε σφάλμα υπηρεσίας.