Как найти разницу между родительским доменом и верхним доменом (iframe), чтобы преодолеть межфреймовый скриптинг

Например, у меня есть веб-сайт www.example.com, который является родительским доменом. Я использую рамки внутри него. Внутри фрейма я звоню www.mail.example.com

Мне нужно проверить, является ли mail.example.com (URL внутри iframe) тем же доменом, в котором Google имеет...

Это предотвращает межкадровый скриптинг. Как этого достичь?

Модальные я разрабатывал..

if (window.document.domain != top.document.domain) {   
   SWGuardianWindowOpen("http://google.com","_self","");
  }

Другая:

if (self != top)
{
//redirect to the google.com
}


if (parent && parent.frames && parent.frames.length>0)

Но они не помогают...


person Dinesh Kumar    schedule 04.03.2014    source источник
comment
Пожалуйста, используйте example.com / example.net / example.org для примеров вместо реальных сайтов, управляемых другими людьми.   -  person Quentin    schedule 04.03.2014
comment
developer.mozilla.org/en-US/docs/Web/ API/Window.postMessage   -  person Quentin    schedule 04.03.2014


Ответы (1)


Вам не нужны хаки JavaScript, если вы хотите предотвратить встраивание страниц разных источников на ваш сайт.

Просто добавьте следующий тег в <head> вашего HTML-документа (пример: http://jsfiddle.net/b28CK/show /):

<meta http-equiv="X-Frame-Options" content="SAMEORIGIN">

Если вам разрешено изменять заголовки ответа вашего сервера, вы также можете добавить заголовок ответа X-Frame-Options: SAMEORIGIN для достижения того же эффекта.

Если вы хотите использовать JavaScript для обнаружения родительского источника(ов), вы можете использовать location.ancestorOrigins, чтобы узнать список родительского источника(ов). Однако это работает только в браузерах на базе Webkit и Chromium.

person Rob W    schedule 04.03.2014
comment
Не могли бы вы показать образец для location.ancestorOrigins? - person Dinesh Kumar; 05.03.2014
comment
@Kumar Это просто список источников (т.е. схема://хост, например http://example.com), начиная с родительского фрейма до верхнего фрейма. Используйте цикл for для перечисления списка, например var origins = location.ancestorOrigins; for (var i=0; i<origins.length; ++i) { alert(origins[i]); } - person Rob W; 05.03.2014