Как я могу предотвратить размещение моего сайта в iframe?


как я могу предотвратить размещение моего сайта в <iframe> и как я могу позволить только одному сайту поместить его в него?

 1
Author: OscarGarcia, 2018-05-10

1 answers

Вы можете проверить, находится ли страница внутри <iframe> или нет, проверив, является ли window.self (текущее окно или кадр) и window.top (окно или родительский кадр) одинаковым:

try {
  console.log('Estamos en iframe: ', window.self !== window.top);
  console.log('Si nos lo permite CORS, podemos ver la URL:',
    window.top.location);
} catch (e) {
  /* Las políticas "same origin" impiden que accedamos a window.top */
  console.log('Estamos en iframe');
}

Если политики того же источника (same origin) не соблюдаются, то мы не сможем проверить URL родительской страницы, невозможно будет предоставить доступ к некоторым страницам да и к другим нет, если вы не получите доступ с помощью CORS.

Политики одного и того же происхождения они соответствуют, если вы включаете одну страницу внутри другой, если:

Две страницы имеют одинаковое происхождение, если протокол, порт (если указано) и хост одинаковы для обеих страниц. Вы увидите, что это иногда называют кортеж схема / хост / порт" (где "Кортеж"представляет собой набор из трех компонентов, которые вместе образуют целое).

В следующей таблице приведены примеры сравнений origenes для URL http://store.company.com/dir/page.html:

Чтобы реализовать CORS в PHP, вам нужно сделать использование заголовка Access-Control-Allow-Origin, как показано в этом примере:

<?php
/* Aquí comprobamos HTTP_REFERER para ver si permitimos o no el iframe */
if ($_SERVER['HTTP_REFERER'] === 'http://urlpermitida/exacta.html') {
  header('Access-Control-Allow-Origin: http://urlpermitida');
}
/* Resto del código de la página */
 4
Author: franmost, 2020-06-11 10:54:57