Если домен A имеет фрейм домена B, в котором есть фрейм домена A, может ли домен A получить доступ к файлам cookie домена B? - PullRequest
0 голосов
/ 12 февраля 2012

Я помню, как читал, что домен A может управлять доменом B, если у домена B есть вспомогательный фрейм.У меня есть такие страницы, как StumbleUpon, где я размещаю другие сайты в фреймах.Что если один из этих сайтов поместит мою страницу в фрейм?Кроме того, такие вещи, как кнопка «Мне нравится» в Facebook и кнопка «Твиттер» в Твиттере - все это фреймы.К каким данным не будет доступа?Смогут ли они внедрить сценарии на мою страницу?

Ответы [ 4 ]

1 голос
/ 12 февраля 2012

Нет, политика Same-Origin запрещает доступ: если два документа не имеют одинаковое происхождение (в основном один и тот же протокол, хост и номер порта в URL), сценарии, работающие в источнике, не могут получить доступ к другому документуDOM, если он не из того же источника.

Но эти «социальные плагины» часто внедряются путем загрузки внешнего скрипта с их серверов.В этом случае внешний скрипт загружается и затем выполняется в исходной точке вашей страницы.Таким образом, политика того же происхождения не применяется.В этом случае эти сценарии смогут получить доступ к любому файлу cookie, доступному через JavaScript (т. Е. Нет HttpOnly флаг).

1 голос
/ 12 февраля 2012

Ваш сайт не может получить доступ к другому домену в iframe, и этот другой домен не может получить доступ к вашему сайту.Однако, если iframe находится в том же домене, что и родительский, к нему можно получить доступ через javascript.

Подробнее читайте здесь: http://pipwerks.com/2008/11/30/iframes-and-cross-domain-security-part-2/

Редактировать: Вот еще немного хорошего чтения http://javascript.info/tutorial/same-origin-security-policy

Редактировать 2: Относительно ваших вопросов о кнопке «Нравится» на Facebook и т. Д.Вы добавляете кнопку «Мне нравится» на свою страницу.Если вы добавите его через встроенный javascript, то javascript будет иметь доступ ко всему на вашем сайте.Однако, если в документ вставлен просто iframe, он не будет иметь доступа ни к чему на вашей странице

0 голосов
/ 12 февраля 2012

Нет , они не могут получить доступ к другим доменам cookie.

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

Кнопка «Мне нравится» может быть создана с использованием заголовка Referer.

Скажем, http://domainA.com/index.html содержит

 <iframe src="http://domainB.com/like.html"></iframe>

Здесь, когда внутри iframe вызывается http://domainB.com/like.html, вместе с запросом отправляется HTTP-заголовок Referer: http://domainA.com/index.html.Таким образом, domainB.com/like.html всегда знает, кто запрашивает.Когда domainB.com получил этот маленький кусочек для информации, он может просто проверить количество лайков на странице и показать результат.

Живой пример

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

 <p>This page is viewd 
 <iframe 
      src="http://tools.cmyweb.net/hitcounter.php" 
      frameborder="0" 
      scrolling="no" 
      width="40px" 
      height="16px" 
 />1</iframe> times</p>
0 голосов
/ 12 февраля 2012

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

...