Безопасность XSS. Коммуникация между 2 iframes от того же домена

Доменный abc.com имеет страницу с 2 iframes. Они оба загружаются из домена xyz.com. Безопасность XSS блокирует доступ JavaScript между теми двумя iframes?

9
задан Ilia Choly 2 February 2010 в 19:44
поделиться

4 ответа

Как говорит Джоэл, политика будет блокировать доступ к родительскому окну.

Вы CAN настроить канал связи между сценариями с клиентами на разрозненных документах / кадрах / Windows из того же домена с помощью файлов cookie. Один документы Document.Cookie Чтобы написать файл cookie, а затем другой, на интервале poller, читает document.cookie , находит что-то новое в нем, и относится к этому как сообщение.

Это действительно довольно раздражает, так как вы должны получить каждый документ, чтобы идентифицировать себя и сигнал, когда и кому он отправляет сообщения. ТОЛЬКО ЛИЧНЫЙ РАБОЛЬНЫЙ Способ, правда.

4
ответ дан 4 December 2019 в 15:18
поделиться

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

var otherDocument = window.parent.frames[x].document;
// this will fail ---------^

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

3
ответ дан 4 December 2019 в 15:18
поделиться

Ифреймы не смогут получить никакого содержимого с главной страницы по javascript с помощью Политики того же самого происхождения (SOP).

Однако они смогут делать POST(GET до некоторой степени) звонки на ваш сервер с помощью ваших куки-файлов (это называется CSRF). Поэтому не полагайтесь только на сессионные cookie-файлы для вашей безопасности.

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

0
ответ дан 4 December 2019 в 15:18
поделиться

Ну, это зависит от того, что ты имеешь в виду под общением. Похоже, что некоторый тип общения возможен. Вот пример: 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>

Поэтому нажимаем на ссылку во втором кадре, но при этом отображается содержимое первого кадра.

6
ответ дан 4 December 2019 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: