Как работает CDN или внешний файл JavaScript на веб-сайте? - PullRequest
16 голосов
/ 27 октября 2011

Во-первых, мне стыдно, что я этого не знаю.Я знаю, что эти вещи работают, но просто не знаю, почему.Есть кое-что, чего я до сих пор не понимаю в CDN и таких вещах, как Google Analytics или Adsense.

Если эти сценарии происходят из домена, отличного от домена вашего сайта, как все это связано с того же происхожденияполитика (SOP) и межсайтовый скриптинг (XSS)?Из того, что я понимаю о XSS и SOP, эти сценарии просто не должны запускаться или взаимодействовать с DOM на вашем сайте.Почему они получают особые привилегии?И как эти специальные привилегии отличаются от других внешних скриптов, которые вызывают ошибки в браузерах из-за XSS и SOP?

В двух словах, я хочу знать, почему скрипты из другого домена могут запускаться, взаимодействовать и манипулироватьмой сайт?

1 Ответ

22 голосов
/ 27 октября 2011

Вы неправильно понимаете эти политики.

SOP запрещает странице (например, в рамке) взаимодействовать со страницей из другого домена или читать ресурс (AJAXзапрос) в другом домене.

Нет ничего плохого в том, что скрипт из другого домена выполняет на вашей странице, если вы явно загружаете его.(так работает JSONP) Однако вы не можете прочитать исходный код сценария, поскольку это ресурс из другого домена.

Ограничения безопасности браузера основаны на источнике страницы, на которой выполняется код, а не на сайте.что конкретный <script> произошел.


Обратите внимание, что включение Javascript из другого домена предоставляет этому сценарию полный доступ к вашей странице;он может отправлять запросы AJAX (в ваш домен) и красть информацию, отправляя запросы не AJAX в другие домены.

Включать сценарий из другого домена можно только в том случае, если вы доверяете этому домену.

...