Τρόποι καταστρατήγησης της πολιτικής ίδιας προέλευσης

Η ίδια πολιτική προέλευσης

Ήθελα να φτιάξω ένα wiki της κοινότητας σχετικά με τις πολιτικές ίδιας προέλευσης της HTML/JS για να βοηθήσω όσους ψάχνουν για αυτό το θέμα. Αυτό είναι ένα από τα θέματα με τις περισσότερες αναζητήσεις στο SO και δεν υπάρχει κανένα ενοποιημένο wiki γι' αυτό, οπότε ξεκινάω :)

Η πολιτική της ίδιας προέλευσης αποτρέπει ένα έγγραφο ή δέσμη ενεργειών που φορτώνεται από ένα προέλευση από το να πάρει ή να ρυθμίσει ιδιότητες ενός εγγράφου από ένα άλλο προέλευσης. Αυτή η πολιτική χρονολογείται σε όλη τη διαδρομή πίσω στο Netscape Navigator 2.0.

Ποιοι είναι οι αγαπημένοι σας τρόποι για να παρακάμψετε τις πολιτικές ίδιας προέλευσης;

Παρακαλείσθε να κρατάτε τα παραδείγματα εκτενή και κατά προτίμηση να συνδέετε και τις πηγές σας.

Η μέθοδος Reverse Proxy

  • Τύπος μεθόδου: Ajax

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

Εάν χρησιμοποιείτε mod_proxy στον Apache, η βασική οδηγία διαμόρφωσης για τη δημιουργία ενός αντίστροφου διακομιστή μεσολάβησης είναι το ProxyPass. Συνήθως χρησιμοποιείται ως εξής:

ProxyPass     /ajax/     http://other-domain.com/ajax/

Σε αυτή την περίπτωση, το πρόγραμμα περιήγησης θα μπορούσε να ζητήσει το /ajax/web_service.xml ως σχετική διεύθυνση URL, αλλά ο διακομιστής θα το εξυπηρετούσε ενεργώντας ως πληρεξούσιος στο http://other-domain.com/ajax/web_service.xml.

Ένα ενδιαφέρον χαρακτηριστικό αυτής της μεθόδου είναι ότι ο αντίστροφος διακομιστής μεσολάβησης μπορεί εύκολα να κατανέμει τις αιτήσεις προς πολλαπλά back-ends, λειτουργώντας έτσι ως load balancer.

Σχόλια (0)

Χρησιμοποιώ το JSONP.

Βασικά, προσθέτετε

<script src="http://..../someData.js?callback=some_func"/>

στη σελίδα σας.

Η some_func() θα πρέπει να καλείται έτσι ώστε να ειδοποιηθείτε ότι τα δεδομένα έχουν εισαχθεί.

Σχόλια (5)

Προσωπικά, το window.postMessage είναι ο πιο αξιόπιστος τρόπος που έχω βρει για τα σύγχρονα προγράμματα περιήγησης. Πρέπει να κάνετε λίγη περισσότερη δουλειά για να βεβαιωθείτε ότι δεν αφήνετε τον εαυτό σας ανοιχτό σε επιθέσεις XSS, αλλά είναι ένα λογικό αντιστάθμισμα.

Υπάρχουν επίσης αρκετά plugins για τις δημοφιλείς εργαλειοθήκες Javascript εκεί έξω που τυλίγουν το window.postMessage και παρέχουν παρόμοια λειτουργικότητα σε παλαιότερα προγράμματα περιήγησης χρησιμοποιώντας τις άλλες μεθόδους που συζητήθηκαν παραπάνω.

Σχόλια (0)