Могу ли я ограничить доступ родителя (только html) к моему дочернему iframe (PHP), который находится в другом домене?

Сценарий таков: Parent.com может иметь файл «только html», и у него есть iframe с Iframe.com (php, который у меня полный \controll).

Вопрос в следующем: как я могу проверить, загружается ли iframe.com только родительским и не может быть iframe другими доменами

РЕДАКТИРОВАТЬ: некоторые решения предлагают проверить Referrer, но это можно подделать.


person user891908    schedule 12.11.2012    source источник
comment
Вы можете проверить IP-адрес сервера, на котором размещается parent.com (я полагаю, что это $_SERVER['REMOTE_HOST']). Конечно, на сервере могут быть и другие сайты, так что это не очень безопасно.   -  person alex.ac    schedule 12.11.2012
comment
@alex.ac — Как? Это iframe. Запрос исходит от клиента, а не от сервера сайта с iframe.   -  person Quentin    schedule 12.11.2012
comment
Извините, вы правы, это IP клиента. Кажется, что реферер - единственный вариант.   -  person alex.ac    schedule 12.11.2012
comment
Если у вас есть возможность использовать файлы .htaccess, то, возможно, это также может быть полезно: stackoverflow.com/questions/5224286/   -  person alex.ac    schedule 12.11.2012


Ответы (1)


referer настолько близко, насколько это возможно, прежде чем попасть на действительно сложную территорию.

Хотя его можно подделать, его может подделать только клиент. Сторонний веб-сайт не мог заставить клиента подделать его.

Тем не менее, referer не является обязательным. Браузеры не обязаны его отправлять, и они, как правило, этого не делают при довольно многих обстоятельствах (например, когда ссылающийся документ был доставлен через HTTPS).

Следующее может сработать…

  1. iframe.example.com использует код на стороне сервера для запроса токена от framed.example.net, запрос включает IP-адрес браузера и пароль, разрешающий iframe.example.com для доступа к framed.example.net.
  2. framed.example.net генерирует токен и передает его iframe.example.com, регистрируя его по IP-адресу браузера.
  3. iframe.example.com создает URI с токеном в строке запроса и использует его в качестве src для iframe.
  4. framed.example.net проверяет, что токен существует и IP-адрес в записи совпадает с IP-адресом, с которого пришел запрос (браузер)

Это будет генерировать ложные отрицательные значения, когда браузер не имеет согласованного IP-адреса (например, когда он находится за группой прокси-серверов, что, насколько я помню, довольно распространено в сотовой широкополосной связи), поэтому я бы не рекомендовал это.

person Quentin    schedule 12.11.2012