почему браузеры позволяют устанавливать cookie в родительском (крестном) домене iframe?

Почему сайт (a.com), имеющий iframe в другом домене (b.com), имеет свой файл cookie, просматриваемый и измененный другим документом домена?

Просто увидел, что это происходит в объявлении, и пошел делать доказательство концепции, и это сработало... вот что я сделал: во-первых, указал a.com и b.com на свой тестовый компьютер IP.

то у меня есть: http://a.com/a.html (это будет сайт, на котором я видел объявление)

<html><body><script src="http://b.com/b.js"></script>

http://b.com/b.js (это будет скрипт объявления, вставленный внутри сайта, указывая на домен компании рекламодателя)

document.write('<iframe src="http://b.com/b.html"></iframe>');

в http://b.com/b.html:

<html><body><script>document.cookie = "test=1;domain=.a.com;path=/;expires=Tue, 30 Oct 2012 02:47:11 UTC";</script></body></html>

и после того, как я запустил это, в запасе firefox 14, у меня есть cookie на a.com.

что управляет этим? где это поведение определено?

Ответ 1

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


Вы найдете полезную информацию на веб-странице Mozilla Cookies разработчика:

Хотя файлы cookie сторонних производителей отправляются только на сервер, устанавливающий их, веб-страница может содержать изображения или другие компоненты, хранящиеся на серверах в других доменах (например, рекламные баннеры). Куки файлы, которые отправляются через эти сторонние компоненты, называются сторонними куками и в основном используются для рекламы и отслеживания в Интернете.

[...] Большинство браузеров разрешают сторонние файлы cookie по умолчанию

Чтобы избежать этих настроек по умолчанию, вы можете быть обеспокоены SameSite которые:

пусть серверы требуют, чтобы файл cookie не отправлялся с межсайтовыми запросами

но

Печенье SameSite все еще экспериментально и пока не поддерживается всеми браузерами.


Взгляните также на документацию CORS (Cross-Origin Resource Sharing), где вы можете прочитать:

Механизм CORS поддерживает безопасные междоменные запросы и передачу данных между браузерами и веб-серверами. [...]

Этот стандарт совместного использования перекрестного происхождения используется для включения HTTP-запросов на межсайтовый сайт для:

[...]

  • Скрипты (для исключенных исключений).

На веб-странице Mozilla Security Same-Origin вы также можете отметить, что <frame> и <iframe> являются ресурсами, которые могут быть встроены в кросс-начало


Если вы беспокоитесь и не принимаете сторонние файлы cookie в Firefox, вы все равно можете установить дополнения для защитного барьера (сделанные EFF), но для этого решения требуется доступ в браузере пользователя.