Доменный abc.com имеет страницу с 2 iframes. Они оба загружаются из домена xyz.com. Безопасность XSS блокирует доступ JavaScript между теми двумя iframes?
Как говорит Джоэл, политика будет блокировать доступ к родительскому окну.
Вы CAN настроить канал связи между сценариями с клиентами на разрозненных документах / кадрах / Windows из того же домена с помощью файлов cookie. Один документы Document.Cookie
Чтобы написать файл cookie, а затем другой, на интервале poller, читает document.cookie
, находит что-то новое в нем, и относится к этому как сообщение.
Это действительно довольно раздражает, так как вы должны получить каждый документ, чтобы идентифицировать себя и сигнал, когда и кому он отправляет сообщения. ТОЛЬКО ЛИЧНЫЙ РАБОЛЬНЫЙ Способ, правда.
Да, потому что чтобы получить ссылку на документ в другом фрейме, вы должны использовать родительский документ.
var otherDocument = window.parent.frames[x].document;
// this will fail ---------^
Доступ к одноуровневым фреймам также потенциально может позволить вам определить, какие другие домены загружены в родительский документ, что может быть истолковано как уязвимость.
Ифреймы не смогут получить никакого содержимого с главной страницы по javascript с помощью Политики того же самого происхождения (SOP).
Однако они смогут делать POST(GET до некоторой степени) звонки на ваш сервер с помощью ваших куки-файлов (это называется CSRF). Поэтому не полагайтесь только на сессионные cookie-файлы для вашей безопасности.
Хороший способ предотвратить это, это иметь токен на главной странице (невидимый для ифреймов), который вы передаете каждому вызову на ваш сервер.
Ну, это зависит от того, что ты имеешь в виду под общением. Похоже, что некоторый тип общения возможен. Вот пример: HTML на www.abc.com:
<iframe name="test1" src="http://www.xyz.com/frame1.html">
<iframe name="test2" src="http://www.xyz.com/frame2.html">
Поскольку ифреймы именуются, мы можем сделать это в кадре 2:
<a href="javascript:alert(document.body.innerHTML)" target="test1">click me</a>
Поэтому нажимаем на ссылку во втором кадре, но при этом отображается содержимое первого кадра.