0
Другие записи за это число:
2011/10/16 - Ереван: отчет первый
2011/10/16_2 - давайте еще поговорим про JS?
<< предыдущая заметкаследующая заметка >>
16 октября 2011
Попытаю я вас про JS

Грипп догнал и меня сегодня — все дома болеют. Работать не хочется, неспешно ковыряю движок. Возник вопрос по JS. Первоначальный вопрос я вычеркнул — мне тут в комментах объяснили мою ошибку и сказали, что это невозможно — с разных доменов нельзя никак передавать информацию через #hash.

Но затем я все-таки обнаружил способ передавать информацию между разными доменами сквозь IFRAME. Для этого необходимо в IFRAME загрузить не саму страницу с чужого сайта, а сперва страницу со СВОЕГО сайта, где будет не iframe, а frame. Классический тупой frame — ужас дизайнеров прошлого века. И вот в этот фрейм уже можно загрузить страницу с ЧУЖОГО сайта. Не проблема такой файлик 1.htm сгенерировать, вставив туда нужный адрес чужой страницы:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<frameset><frame id='bubuka' src="http://binoniq.net/iframeo?adr=iframe_binoniq#pivko" name="bubuka"></frameset>
</html>

Чудо! Чужая страница теперь может (при желании и необходимой оснастке, разумеется) записывать в top#hash верхнего окна информацию (которую я могу оттуда читать), я могу записывать в ее #hash информацию, которую она прочесть сможет, ну и при помощи всякой обвязки можно организовывать их взаимодействие, например фрейм может попросить верхнее окно выставить ему такую высоту, какую хочет (это и была одна из целей изыскания). Проверил на Нокии E90 и на своем компе — работает. Мой комп, правда, может делать это и по протоколу postMessage, это прекрасное изобретение для того и предназначено. Но задача была поддерживать именно старые браузеры. Моделька: http://lleo.me/blog/if



БЫЛО:
Допустим, я загрузил свою страницу: www.lleo.url/1.htm#trololo, на которой два IFRAME, и они грузят с _чужих_ ресурсов еще две страницы: www.pupkin.url/1.htm#code=1234
www.hacker.url/1.htm#code=5678

На моей lleo.url, понятное дело, window === window.self === window.top

А у pupkin.url window.top !== window.self, для него не секрет, что его страница загружена кем-то в iframe. Он может через window.top.location.hash прочитать мое значение #trololo, может заменить его на #wowow без перезагрузки, и даже может отправить мое центральное окно гулять natribu.org. Это понятно.

Интересует следующее: может ли страница hacher.url/1.htm из своего IFRAME каким-то образом узнать, что рядом есть еще IFRAME pupkin.url? И прочитать его #code=1234?

Ответ интересен, потому что от этого сильно зависит модель безопасности.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок

Комментарии к этой заметке скрываются - они будут видны только вам и мне.

Оставить комментарий