XSS безопасность.Связь между двумя фреймами из одного домена - PullRequest
9 голосов
/ 02 февраля 2010

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

Ответы [ 4 ]

6 голосов
/ 03 февраля 2010

Ну, это зависит от того, что вы подразумеваете под общением.Кажется, какой-то тип общения возможен.Вот пример: HTML на www.abc.com:

<iframe name="test1" src="http://www.xyz.com/frame1.html">
<iframe name="test2" src="http://www.xyz.com/frame2.html">

Поскольку имена фреймов названы, мы можем сделать это в frame2:

<a href="javascript:alert(document.body.innerHTML)" target="test1">click me</a>

Таким образом, мы нажимаем ссылку в рамке2, но отображается содержимое кадра 1.

4 голосов
/ 03 февраля 2010

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

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

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

3 голосов
/ 02 февраля 2010

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

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

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

0 голосов
/ 02 февраля 2010

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

Однако они смогут выполнять вызовы POST (GET для некоторых экстентов)на ваш сервер, используя ваши куки (это называется CSRF).Так что не полагайтесь только на сессионные куки для вашей безопасности.

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

...