Nginx - предотвратить запуск файла.php на чем-либо, кроме вашего собственного сервера / домена?
У нас есть mp3-плеер, который работает через iFrame, не наш выбор, но вот как мы застряли с ним. Мы хотим, чтобы другие люди просто не встраивали iframe на свой сайт.
Каков был бы лучший способ сделать это? Мы запускаем nginx, поэтому нет.htaccess. MP3-плеер состоит из php-файлов, и мы должны продолжать его в iframe.
В любом случае можно заблокировать определенный php-файл mp3-плеера (в данном случае html5player.php), чтобы его можно было запускать только на нашем сервере или доменном имени? Конечно, есть способ сделать это в Nginx? Но тогда, конечно, если они встраивают iFrame, он будет думать, что он все равно работает на нашем сервере, не так ли?
Все решения, о которых я думал, рухнули где-то на этом пути, поэтому вклад очень важен.
2 ответа
Похоже на работу для заголовка X-Frame-Options:
add_header X-Frame-Options SAMEORIGIN;
(Очевидно, применяется к местоположению, соответствующему рассматриваемому файлу)
Вы также можете добавить заголовок в PHP, что может быть проще.
Убедитесь, что заголовок добавлен ровно один раз, иначе он будет игнорироваться некоторыми браузерами, вызывая много "веселья" при отладке. Смотрите отчет об ошибках для Chrome, отчет об ошибках для Firefox.
Я не эксперт NGINX, но это может сработать теоретически:
location ~ * \ urltoyourplayer? $ { valid_referers нет заблокированных yourdomain.fqdn; if ($invalid_referer) { возврат 403; } }
Это должно предотвратить встраивание вашего плеера в другие сайты, прочитав URL реферера, если он соответствует вашему домену, тогда ОК, в противном случае верните ошибку 403.